home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Information / CSMP Digest / volume 3 / csmp-digest-v3-101 < prev    next >
Text File  |  1995-12-31  |  94KB  |  2,571 lines

  1. C.S.M.P. Digest             Wed, 21 Jun 95       Volume 3 : Issue 101
  2.  
  3. Today's Topics:
  4.  
  5.         Checking for weak-linked CFM libraries
  6.         Copying files across volumes?
  7.         Creating alias files
  8.         Design flaw of the Drag Manager?
  9.         How to do a time-to-finnish bar...
  10.         How to get TCP-IP address?
  11.         PICS file format?
  12.         PPC and SIZE resource
  13.         Pausing SndPlayDoubleBuffer
  14.         QD3d in develop 22
  15.         QuickDraw 3D Database for Toolbox Assistant now available!
  16.         Techniques for collision detection
  17.         What is the Finder trying to tell me?
  18.         Why is the Prefererred Executable Format a big secret?
  19.  
  20.  
  21.  
  22. The Comp.Sys.Mac.Programmer Digest is moderated by Francois Pottier
  23. (pottier@clipper.ens.fr).
  24.  
  25. The digest is a collection of article threads from the internet newsgroups
  26. comp.sys.mac.programmer.help, csmp.tools and csmp.misc. It is designed for
  27. people who read news semi-regularly and want an archive of the discussions.
  28. If you don't know what a newsgroup is, you probably don't have access to
  29. it. Ask your systems administrator(s) for details. If you don't have access
  30. to news, you may still be able to post messages to the group by using a
  31. mail server like anon.penet.fi (mail help@anon.penet.fi for more
  32. information).
  33.  
  34. Each issue of the digest contains one or more sets of articles (called
  35. threads), with each set corresponding to a 'discussion' of a particular
  36. subject.  The articles are not edited; all articles included in this digest
  37. are in their original posted form (as received by our news server at
  38. nef.ens.fr).  Article threads are not added to the digest until the last
  39. article added to the thread is at least two weeks old (this is to ensure that
  40. the thread is dead before adding it to the digest).  Article threads that
  41. consist of only one message are generally not included in the digest.
  42.  
  43. The digest is officially distributed by two means, by email and ftp.
  44.  
  45. If you want to receive the digest by mail, send email to listserv@ens.fr
  46. with no subject and one of the following commands as body:
  47.     help                                Sends you a summary of commands
  48.     subscribe csmp-digest Your Name     Adds you to the mailing list
  49.     signoff csmp-digest                 Removes you from the list
  50. Once you have subscribed, you will automatically receive each new
  51. issue as it is created.
  52.  
  53. The official ftp info is //ftp.dartmouth.edu/pub/csmp-digest.
  54. Questions related to the ftp site should be directed to
  55. scott.silver@dartmouth.edu.
  56.  
  57. -------------------------------------------------------
  58.  
  59. >From Jim.Matthews@dartvax.dartmouth.edu (Jim Matthews)
  60. Subject: Checking for weak-linked CFM libraries
  61. Date: Mon, 29 May 1995 14:33:39 -0500
  62. Organization: Dartmouth College
  63.  
  64. I've seen the answer to this, but for the life of me I can't find it, so
  65. hopefully someone out there has it handy....
  66.  
  67. I want to check at runtime whether a weak-linked CFM library (specifically
  68. ObjectSupportLib) is present, so that I can let users run my app (sans
  69. Apple Event Object capabilities) without having to find and install the
  70. library.  I know that theres a simple one-line test, but my scan of
  71. relevant documentation and sample code hasn't turned it up.
  72.  
  73. Thanks,
  74.  
  75. Jim Matthews
  76. Dartmouth Software Development
  77. <http://www.dartmouth.edu/pages/softdev/>
  78.  
  79. +++++++++++++++++++++++++++
  80.  
  81. >From Jim.Matthews@dartvax.dartmouth.edu (Jim Matthews)
  82. Date: Mon, 29 May 1995 15:14:27 -0500
  83. Organization: Dartmouth College
  84.  
  85. In article <Jim.Matthews-2905951433390001@kip-2-sn-367.dartmouth.edu>,
  86. Jim.Matthews@dartvax.dartmouth.edu (Jim Matthews) wrote:
  87.  
  88. > I want to check at runtime whether a weak-linked CFM library (specifically
  89. > ObjectSupportLib) is present, so that I can let users run my app (sans
  90. > Apple Event Object capabilities) without having to find and install the
  91. > library.  I know that theres a simple one-line test, but my scan of
  92. > relevant documentation and sample code hasn't turned it up.
  93.  
  94. Of course, within an hour of posting this I happened to pick up develop 21
  95. and see the same question in the Q & A section.  The answer is to compare
  96. a symbol from the library with kUnresolvedSymbolAddress.  So the
  97. expression:
  98.  
  99.         AEObjectInit != kUnresolvedSymbolAddress
  100.  
  101. returns true if ObjectSupportLib is available, and false otherwise.
  102.  
  103. Jim Matthews
  104. Dartmouth Software Development
  105. <http://www.dartmouth.edu/pages/softdev/>
  106.  
  107. +++++++++++++++++++++++++++
  108.  
  109. >From sandvik@apple.com (Kent Sandvik)
  110. Date: Wed, 31 May 1995 21:12:53 -0800
  111. Organization: Apple Computer, Inc. Developer Technical Support
  112.  
  113. In article <Jim.Matthews-2905951433390001@kip-2-sn-367.dartmouth.edu>,
  114. Jim.Matthews@dartvax.dartmouth.edu (Jim Matthews) wrote:
  115.  
  116. > I've seen the answer to this, but for the life of me I can't find it, so
  117. > hopefully someone out there has it handy....
  118. > I want to check at runtime whether a weak-linked CFM library (specifically
  119. > ObjectSupportLib) is present, so that I can let users run my app (sans
  120. > Apple Event Object capabilities) without having to find and install the
  121. > library.  I know that theres a simple one-line test, but my scan of
  122. > relevant documentation and sample code hasn't turned it up.
  123.  
  124.   if( ! NameofAKnownFunctionInTheCFMLibrary )
  125.       printf("Bummer");
  126.  
  127.  
  128. --Kent
  129.  
  130. -- 
  131. Kent Sandvik   sandvik@apple.com                  Working with Multimedia stuff...
  132. Apple Developer Technical Support.                 Private activities on Internet.
  133.  
  134. +++++++++++++++++++++++++++
  135.  
  136. >From jordanz@altura.com (Jordan Zimmerman)
  137. Date: Thu, 01 Jun 1995 01:23:31 -0800
  138. Organization: Altura Software, Inc.
  139.  
  140. > I've seen the answer to this, but for the life of me I can't find it, so
  141. > hopefully someone out there has it handy....
  142. > I want to check at runtime whether a weak-linked CFM library (specifically
  143. > ObjectSupportLib) is present, so that I can let users run my app (sans
  144. > Apple Event Object capabilities) without having to find and install the
  145. > library.  I know that theres a simple one-line test, but my scan of
  146. > relevant documentation and sample code hasn't turned it up.
  147.  
  148. I belive you can simply try to FindSymbol on something you know is in the
  149. library.
  150.  
  151. -- 
  152. Jordan Zimmerman, Altura Software
  153. home page: http://www.altura.com/jordanz/home.html
  154. Who is John Galt?
  155.  
  156. ---------------------------
  157.  
  158. >From hhahn@calshp.cals.wisc.edu (Harry Hahn)
  159. Subject: Copying files across volumes?
  160. Date: Sun, 04 Jun 1995 01:46:55 -0500
  161. Organization: Univ. of Wisconsin- Madison
  162.  
  163. How does one copy a file from one volume to another? It looks like none of
  164. the FS calls work across volumes and though PBHCopyFile looked like the
  165. ticket, I get a -50 error (paramError-function not supported by volume).
  166.  
  167. I've poured over NIM:Files but can't find anything else remotely applicable.
  168.  
  169. Thanks,
  170. Harry
  171. _______________________________________
  172. Harry Hahn <hhahn@calshp.cals.wisc.edu>           
  173.  
  174. +++++++++++++++++++++++++++
  175.  
  176. >From jumplong@aol.com (Jump Long)
  177. Date: 4 Jun 1995 12:03:27 -0400
  178. Organization: America Online, Inc. (1-800-827-6364)
  179.  
  180. Harry Hahn wrote:
  181. >How does one copy a file from one volume to another? It looks like none
  182. of
  183. >the FS calls work across volumes and though PBHCopyFile looked like the
  184. >ticket, I get a -50 error (paramError-function not supported by volume).
  185.  
  186. PBHCopyFile copies files between two locations on the *same* remote file
  187. server. It lets the server perform the copy rather than moving the data to
  188. your client and back.
  189.  
  190. What you want is a function named FileCopy (HFileCopy and FSpFileCopy) in
  191. the Apple sample code "MoreFiles." FileCopy uses PBHCopyFile if it can; if
  192. it cannot, FileCopy performs the copy with its own code. You get the
  193. source code to MoreFiles, so if you feel like adding a progress dialog or
  194. anything like that, you can change the code.
  195.  
  196. - Jim Luther
  197.  
  198. +++++++++++++++++++++++++++
  199.  
  200. >From Toby <toby@mmcorp.com>
  201. Date: 5 Jun 1995 15:16:44 GMT
  202. Organization: MultiMedia Corporation
  203.  
  204. You could do it manually (may be faster) by opening the resource file and
  205. data file on the source volume, creating the output files and then for
  206. each open file do a while(!eof) read/write thing...?
  207.  
  208. Well, it seems like the easiest method to me!
  209.  
  210. toby@mmcorp.com
  211.  
  212. +++++++++++++++++++++++++++
  213.  
  214. >From mouser@zercom.net (Martin-Gilles Lavoie)
  215. Date: Mon, 05 Jun 1995 22:17:55 -0500
  216. Organization: nil
  217.  
  218. In article <hhahn-0406950146550001@f180-178.net.wisc.edu>,
  219. hhahn@calshp.cals.wisc.edu (Harry Hahn) wrote:
  220.  
  221. > How does one copy a file from one volume to another? It looks like none of
  222. > the FS calls work across volumes and though PBHCopyFile looked like the
  223. > ticket, I get a -50 error (paramError-function not supported by volume).
  224. > I've poured over NIM:Files but can't find anything else remotely applicable.
  225.  
  226. There's no function in Mac OS for a file copy from one volume to another. 
  227. Instead, you have to handle that yourself--a pain unless you do one of two
  228. things:
  229.  
  230. Either "ask" the Finder to copy it for you (via AppleScript), or use the
  231. MoreFiles library from Apple DEvelopper Technical Support (DTS).  This DTS
  232. library is available on a number of FTP sites (including apple's
  233. ftp.apple.com), and contains a welth of utilities for handling files,
  234. including file copy commands.  Everything comes with sources.
  235.  
  236. Martin-Gilles Lavoie
  237.  
  238. Martin-Gilles Lavoie
  239. - ------------------------------------------------------------------------------
  240.    The company I work for has it's own opinions.  So do I.  -- MGL
  241. - ------------------------------------------------------------------------------
  242.  
  243. ---------------------------
  244.  
  245. >From gfinn@netcom.com (Greg Finnegan)
  246. Subject: Creating alias files
  247. Date: Mon, 5 Jun 1995 23:44:38 GMT
  248. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  249.  
  250. Does anybody have any code snippets (or pointers to code snippets)
  251. for creating an alias file programatically (e.g. given an FSSpec
  252. to a file and an FSSpec to a folder, create an alias file in the 
  253. specified folder). I realiaze that the alias file format is 
  254. proprietary, but I'm willing to live with code than may break
  255. in the future because I REALLY need this now (it is beyond me
  256. why the format of the 'alis' resource in an alias file is different
  257. than the handle created by NewAlias()).
  258.  
  259. Someone mentioned an article in MacTutor a while back. I would
  260. apreciate any info on that too.
  261.  
  262. Greg.
  263. gfinn@netcom.com
  264.  
  265.  
  266. +++++++++++++++++++++++++++
  267.  
  268. >From jadams@eng.umd.edu (Josh Adams)
  269. Date: Mon, 05 Jun 1995 23:31:28 -0400
  270. Organization: University of Maryland College Park
  271.  
  272. In article <gfinnD9q4ME.qo@netcom.com>, gfinn@netcom.com (Greg Finnegan) wrote:
  273.  
  274. > Does anybody have any code snippets (or pointers to code snippets)
  275. > for creating an alias file programatically (e.g. given an FSSpec
  276.  
  277. I have some code that is supposed to send a Make Alias apple event to the
  278. finder. However, at this moment it doesn't work. Also, I want to then
  279. move that alias to another folder, but I don't know the best way to do this.
  280. (How to select it? Not all aliases will end in " alias", since SpeedyFinder
  281. can change what you stick on and in other countries, who knows. Can't go by
  282. latest created file, because that might not be accurate if something makes
  283. a file (well, i suppose if you don't call WaitNextEvent, another file CAN'T
  284. be created... hmmm. Maybe that's how I'll do it)
  285.  
  286. Anyway, if you ever find a way to move that alias (like Alias Director does)
  287. and if you get good code to make the alias, could you forward it to me? I'll
  288. do the same if I find anything. If you want what I have, tell me...
  289.  
  290. Josh
  291.  
  292. -- 
  293. Josh Adams                       |  Will she trick or treat,
  294. Mail: jadams@eng.umd.edu         |  I bet she will.
  295. Talk: stu@case.dorm.umd.edu      |    - Type O Negative
  296.  
  297. +++++++++++++++++++++++++++
  298.  
  299. >From pottier@drakkar.ens.fr (Francois Pottier)
  300. Date: 6 Jun 1995 16:37:39 GMT
  301. Organization: Ecole Normale Superieure, Paris
  302.  
  303. In article <jadams-0506952331280001@annex3-31.dial.umd.edu>,
  304. Josh Adams <jadams@eng.umd.edu> wrote:
  305.  
  306. >> Does anybody have any code snippets (or pointers to code snippets)
  307. >> for creating an alias file programatically (e.g. given an FSSpec
  308.  
  309. As far as I know, there is no official way of creating aliases (Apple
  310. says aliases are strictly a user thing, which is stupid).
  311.  
  312. So you just roll your own: create a resource file, create an alias handle
  313. with NewAlias, write it as an 'alis' 0 resource, set the file's isAlias
  314. bit. That should do the trick.
  315.  
  316. Hope this helps,
  317.  
  318.  
  319.  
  320. -- 
  321. Francois Pottier                                            pottier@dmi.ens.fr
  322. - ----------------------------------------------------------------------------
  323. Check my WWW page at http://acacia.ens.fr:8080/home/pottier/ ...
  324.  
  325. +++++++++++++++++++++++++++
  326.  
  327. >From telesis@ecf.toronto.edu (Telesis North)
  328. Date: Tue, 6 Jun 1995 17:37:29 GMT
  329. Organization: undecided
  330.  
  331. In article <gfinnD9q4ME.qo@netcom.com>, gfinn@netcom.com (Greg Finnegan) wrote:
  332. > Does anybody have any code snippets (or pointers to code snippets)
  333. > for creating an alias file programatically (e.g. given an FSSpec
  334.  
  335. See Technote TB-535:Finder Q&A's.
  336.  
  337. - -
  338. Roger Pantos                 Telesis North, Inc.           telesisnorth
  339. Mac Software Guy             telesis@ecf.toronto.edu       (AppleLink)
  340. "Bigboo-TAY! Boo-TAY!!"
  341.  
  342. +++++++++++++++++++++++++++
  343.  
  344. >From David.Walton.10@nd.edu (David Walton)
  345. Date: Tue, 06 Jun 1995 13:08:38 -0500
  346. Organization: University of Notre Dame, OUC
  347.  
  348. In article <gfinnD9q4ME.qo@netcom.com>, gfinn@netcom.com (Greg Finnegan) wrote:
  349.  
  350. >Does anybody have any code snippets (or pointers to code snippets)
  351. >for creating an alias file programatically (e.g. given an FSSpec
  352. >to a file and an FSSpec to a folder, create an alias file in the 
  353. >specified folder). I realiaze that the alias file format is 
  354. >proprietary, but I'm willing to live with code than may break
  355. >in the future because I REALLY need this now (it is beyond me
  356. >why the format of the 'alis' resource in an alias file is different
  357. >than the handle created by NewAlias()).
  358. >
  359.  
  360. Alias files created with NewAlias work fine from the Finder.  Here's a
  361. routine I used a long time ago:
  362.  
  363.  
  364. void MakeAliasFile(FSSpecPtr aliasFile, FSSpecPtr target, ResType fType,
  365. ResType fCreator)
  366. {
  367.    AliasHandle    alias;
  368.    short          refNum;
  369.    FInfo          fileInfo;
  370.    OSErr          error;
  371.  
  372.    FSpCreateResFile(aliasFile, fCreator, fType, smSystemScript);
  373.    error = ResError();
  374.    refNum = FSpOpenResFile(aliasFile, fsRdWrPerm);
  375.    error = NewAlias(nil, target, &alias);
  376.    AddResource((Handle)alias, 'alis', 0, target->name);
  377.    CloseResFile(refNum);
  378.    error = FSpGetFInfo(aliasFile, &fileInfo);
  379.    fileInfo.fdFlags |= fIsAlias;
  380.    error = FSpSetFInfo(aliasFile, &fileInfo);
  381. }
  382.  
  383. -- 
  384. David Walton                    |  Macintosh Consultant & Graduate Student
  385. Mailto:David.Walton.10@nd.edu   |  Office of University Computing 
  386. http://www.nd.edu/~dwalton1/    |  Dept. History & Philosophy of Science
  387. Voice: 219-631-8024             |  University of Notre Dame
  388.  
  389.     "Beware the advice of successful people; they do not seek company."   
  390.  
  391. +++++++++++++++++++++++++++
  392.  
  393. >From grobbins@znet.com (Grobbins)
  394. Date: Wed, 07 Jun 1995 02:18:14 -0700
  395. Organization: Skunkworks
  396.  
  397. In article <3r208j$bob@nef.ens.fr>, pottier@drakkar.ens.fr (Francois
  398. Pottier) wrote:
  399. >As far as I know, there is no official way of creating aliases (Apple
  400. >says aliases are strictly a user thing, which is stupid).
  401.  
  402. Specifically, tech note FL 30 says:
  403.  
  404.   Finder alias files are one aspect of the Macintosh human
  405.   interface considered "reserved for users."  The internal
  406.   format of Finder alias files is intentionally undefined
  407.   because it is subject to change and because Finder alias
  408.   files should be neither created nor altered by
  409.   applications. The Finder is the user's domain, and Finder
  410.   alias files are a user convenience.
  411.  
  412. The note makes little pretense of keeping the contents of alias files a
  413. secret: they are alias resources, created by the Finder, stored in a
  414. file.  There is even a supported way to create them: send an Apple event
  415. to the scriptable Finder.
  416.  
  417. I'm sure every application developer thinks that users would love to have
  418. an alias to their app on the desktop or in the startup items folder.  But
  419. the general principle stands: the Finder environment should be under the
  420. control of the user.
  421.  
  422. Grobbins                                  grobbins@znet.com
  423.  
  424.  
  425. ---------------------------
  426.  
  427. >From jbeeghly@u.washington.edu (K. Beeghly)
  428. Subject: Design flaw of the Drag Manager?
  429. Date: 24 May 1995 20:45:55 GMT
  430. Organization: University of Washington
  431.  
  432.  
  433. I've been working on this for a few days now, and could really use some 
  434. insight....
  435.  
  436. I'm adding Drag & Drop functionality to my app.  The problem:  my app 
  437. uses the ENTIRE contents of it's window (none of it is white), it's a color 
  438. window, and I have encountered two bugs (I think):
  439.  
  440. 1. If I edit the WIND resource and change the window from 'Default' to 
  441. 'Custom', and run my app, when I drag a file into the window I get a 
  442. 'light gray' border instead of the expected 'light blue' border.  This 
  443. happens even if the background color is WHITE and happens weither I draw 
  444. the contents of my window or not. For example, when I changed my code to..
  445.  
  446. void DoUpdate( WindowPtr wp )
  447. {
  448.         GrafPtr                 oldPort;
  449.         GetPort( &oldPort );
  450.         SetPort( wp );
  451.         BeginUpdate( wp );
  452.         EraseRgn( wp->visRgn );
  453.  
  454.         if( !EmptyRgn( wp->visRgn ) )
  455.         {
  456.                 //DrawContents( wp );
  457.         }
  458.         EndUpdate( wp );
  459.         SetPort( oldPort );
  460. }
  461. ...it still draws the border in gray, so I believe I'm 
  462. not doing anything to cause this.
  463.  
  464. What's the problem?  Why not just live with the gray border?  Well, the 
  465. contents of the window is painted gray, so when a user drags a file into 
  466. my app, they can't tell that the app accepts dropped files!
  467.  
  468. The solution:  Just use the 'Default' option.  I'll have to paint the 
  469. window gray myself, but at least I'll still get the blue border.  Well, I've 
  470. encountered some other problems...
  471.  
  472. A portion of the border of my window is black, and when I drag af file 
  473. into the window, there is no change on the black portion of the border, 
  474. and there is NO INDICATION that the window accepts any files!
  475.  
  476. For example, if I have the WIND resource useing the 'Default' option, and 
  477. I use the following to draw/update my window:
  478.  
  479.  
  480. void DoUpdate( WindowPtr wp )
  481. {
  482.         GrafPtr                 oldPort;
  483.         GetPort( &oldPort );
  484.         SetPort( wp );
  485.         BeginUpdate( wp );
  486.         EraseRgn( wp->visRgn );
  487.  
  488.         if( !EmptyRgn( wp->visRgn ) )
  489.         {
  490.                 //DrawContents( wp );
  491.                 FillRect(&wp->portRect, &qd.black);
  492.         }
  493.         EndUpdate( wp );
  494.         SetPort( oldPort );
  495. }
  496.  
  497. I get a window filled with black (expected).  If I drag a file into the 
  498. window, neither a blue border nor the gray border is drawn!  The user has 
  499. no way of knowing that the window accepts dropped files!
  500.  
  501. I guess I could create a custom cursor, and change the cursor if it 
  502. enters the contents of my window, but I really want to adhere to the HIG 
  503. that Apple has set up for the drag manager.  As far as I can tell, I'm 
  504. doing everything right!
  505.  
  506. Has anybody else encountered this?  Is there a tech note on it?
  507.  
  508.  
  509.  
  510. PS.  Yes, I am using a GetNewCWindow call to create the window.
  511. PPS.  I tested out "ReceiveDragDemo' by Gregory H. Dow (from Dave Marks' 
  512. 'Ultimate Mac Progrmming' book), and it does the same thing.
  513. PPPS.  Right now, I'm using flavorTypeHFS for my flavor, but I only want 
  514. to accept FILES, not FILES and FOLDERS.  Is there a flavor for this?
  515.  
  516.  
  517. Thanks,
  518.  
  519.  
  520. Jeff
  521.  
  522.  
  523. +++++++++++++++++++++++++++
  524.  
  525. >From Carl R. Osterwald <carl_osterwald@nrel.gov>
  526. Date: 25 May 1995 15:47:46 GMT
  527. Organization: National Renewable Energy Laboratory
  528.  
  529. In article <3q05u3$sa6@nntp5.u.washington.edu> K. Beeghly,
  530. jbeeghly@u.washington.edu writes:
  531. >I get a window filled with black (expected).  If I drag a file into the 
  532. >window, neither a blue border nor the gray border is drawn!  The user has 
  533. >no way of knowing that the window accepts dropped files!
  534.  
  535. I ran into the same problem--its a consequence of the way the Drag
  536. Manager draws the highlighting (using the QuickDraw Hilite mode, if I
  537. remember correctly).  My solution was to inset the rectangle where the
  538. window's content is drawn by 2 pixels, leaving a white border where
  539. drag highlights are drawn (inside the scroll bars also).  The border
  540. turned out to be asthetically pleasing, and the drag highlights are now
  541. easy to deal with.
  542.  
  543. +++++++++++++++++++++++++++
  544.  
  545. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  546. Date: Fri, 26 May 1995 11:31:34 +1200
  547. Organization: University of Waikato
  548.  
  549. In article <3q05u3$sa6@nntp5.u.washington.edu>, jbeeghly@u.washington.edu
  550. (K. Beeghly) wrote:
  551.  
  552. >I'm adding Drag & Drop functionality to my app.  The problem:  my app 
  553. >uses the ENTIRE contents of it's window (none of it is white), it's a color 
  554. >window, and I have encountered two bugs (I think):
  555. >
  556. >1. If I edit the WIND resource and change the window from 'Default' to 
  557. >'Custom', and run my app, when I drag a file into the window I get a 
  558. >'light gray' border instead of the expected 'light blue' border.  This 
  559. >happens even if the background color is WHITE and happens weither I draw 
  560. >the contents of my window or not.
  561.  
  562. I believe the Drag Manager uses QuickDraw's highlight mode to draw its
  563. highlight. This would mean the highlight colour only appears where the
  564. background colour is currently being displayed. Have you tried setting the
  565. background colour in your window's CGrafPort to match the background that
  566. you're drawing?
  567.  
  568. Another possibility is to use your own highlight code. You could install
  569. your own highlight action in the drag, or, what I suspect would be
  570. simpler, draw your highlight directly and don't bother calling
  571. Show/HideDragHilite at all. (After all, you're the one responsible for how
  572. the drag appears in your own windows.)
  573.  
  574. +++++++++++++++++++++++++++
  575.  
  576. >From gspnx@di.unito.it (Fabrizio Oddone)
  577. Date: Sun, 28 May 1995 11:51:16 +0200
  578. Organization: Myself
  579.  
  580. In article <3q05u3$sa6@nntp5.u.washington.edu>, jbeeghly@u.washington.edu
  581. (K. Beeghly) wrote:
  582.  
  583. > 1. If I edit the WIND resource and change the window from 'Default' to 
  584. > 'Custom', and run my app, when I drag a file into the window I get a 
  585. > 'light gray' border instead of the expected 'light blue' border.  This 
  586. > happens even if the background color is WHITE and happens weither I draw 
  587. > the contents of my window or not. For example, when I changed my code to..
  588.  
  589. [snip]
  590.  
  591. > ...it still draws the border in gray, so I believe I'm 
  592. > not doing anything to cause this.
  593. > What's the problem?  Why not just live with the gray border?  Well, the 
  594. > contents of the window is painted gray, so when a user drags a file into 
  595. > my app, they can't tell that the app accepts dropped files!
  596.  
  597. The problem resides in the wctb resource.
  598. If you want a color window with the standard colors, just use an 8-byte
  599. size wctb resource (you can find it in any Drag Manager-savvy application
  600. with ResEdit).
  601.  
  602. > Has anybody else encountered this?  Is there a tech note on it?
  603.  
  604. Oh, yes, there IS a technote somewhere in the Apple Internet servers.
  605. Basically, the wctb/dctb etc. resource format HAS CHANGED!
  606. That is, the one documented in IM V is no more current.
  607.  
  608. -- 
  609. --
  610.  Fabrizio Oddone <gspnx@di.unito.it>
  611. http://www.di.unito.it/pub/WWW/www_student/apple/FabrizioOddone/
  612.  
  613. +++++++++++++++++++++++++++
  614.  
  615. >From greg@math.harvard.edu (Gregory D. Landweber)
  616. Date: Sun, 28 May 1995 10:50:08 -0400
  617. Organization: Harvard University
  618.  
  619. In article <gspnx-2805951151160001@green42.vol.it>, gspnx@di.unito.it
  620. (Fabrizio Oddone) wrote:
  621.  
  622. > Oh, yes, there IS a technote somewhere in the Apple Internet servers.
  623. > Basically, the wctb/dctb etc. resource format HAS CHANGED!
  624. > That is, the one documented in IM V is no more current.
  625.  
  626. The wctb/dctb color table resources changed four years ago with the release
  627. of System 7.  Unfortunately, ResEdit isn't clever enough to know that or
  628. react accordingly.  The tech note in question describes the additional
  629. fields for various tinge and highlight colors, and it was recently modified
  630. to show how to update those tinge colors when the user modifies them in the
  631. "Color" control panel.
  632.  
  633. -- Greg Landweber
  634.    greg@math.harvard.edu
  635. (author of "Greg's Buttons" and "Greg's Browser")
  636.  
  637. +++++++++++++++++++++++++++
  638.  
  639. >From Simon Fraser <s.fraser@ic.ac.uk>
  640. Date: 3 Jun 1995 13:11:55 GMT
  641. Organization: NERC Centre for Population Biology, Imperial College
  642.  
  643. ldo@waikato.ac.nz (Lawrence D9Oliveiro) wrote:
  644. >In article <3q05u3$sa6@nntp5.u.washington.edu>, jbeeghly@u.washington.edu
  645. >(K. Beeghly) wrote:
  646. >
  647. >>I'm adding Drag & Drop functionality to my app.  The problem:  my app 
  648. >>uses the ENTIRE contents of it's window (none of it is white), it's a color 
  649. >>window, and I have encountered two bugs (I think):
  650. >>
  651. >>1. If I edit the WIND resource and change the window from 'Default' to 
  652. >>'Custom', and run my app, when I drag a file into the window I get a 
  653. >>'light gray' border instead of the expected 'light blue' border.  This 
  654. >>happens even if the background color is WHITE and happens weither I draw 
  655. >>the contents of my window or not.
  656. >
  657. >I believe the Drag Manager uses QuickDraw's highlight mode to draw its
  658. >highlight. This would mean the highlight colour only appears where the
  659. >background colour is currently being displayed. Have you tried setting the
  660. >background colour in your window's CGrafPort to match the background that
  661. >you're drawing?
  662. >
  663. >Another possibility is to use your own highlight code. You could install
  664. >your own highlight action in the drag, or, what I suspect would be
  665. >simpler, draw your highlight directly and don't bother calling
  666. >Show/HideDragHilite at all. (After all, you're the one responsible for how
  667. >the drag appears in your own windows.)
  668.  
  669. You should take a look at:
  670.  
  671. http://www.http://www.info.apple.com/dev/technotes/Toolbox/tb_33.html
  672.  
  673. which discussed the new wctb resource format and its effects on
  674. Drag hilite colours.
  675.  
  676. _________________________________________________________________
  677. Simon Fraser                   NERC Centre for Population Biology
  678. s.fraser@ic.ac.uk                Imperial College at Silwood Park
  679.                                        Ascot, Berks.  SL5 7PY  UK
  680.  
  681.  
  682. ---------------------------
  683.  
  684. >From tah92@ecs.soton.ac.uk (Thomas Haggie)
  685. Subject: How to do a time-to-finnish bar...
  686. Date: 1 Jun 1995 17:02:43 +0100
  687. Organization: Electronics and Computer Science, University of Southampton
  688.  
  689. Hello,
  690.         I have been looking to see how to create a dialogue that will display
  691. the completion status of some of my routines, to give an idea of how much
  692. longer they're going to take, like in the dialog produced when copying large 
  693. files. Basically to fit somehow to a loop processing stuff of a known length 
  694. a for loop for example. I'd have thought there'd be some sort of standard OS
  695. routing like SFGetFile for files, as it's such a commonly needed thing. If
  696. anyone could point me in the direction of some sample code/resources I'd be
  697. much obliged, I'd have thought that this would also be a useful addition to the
  698. Mac Programming FAQ...
  699.  
  700. _____________________.                  -*TOM*- 
  701. tah92@ecs.soton.ac.uk|
  702.         
  703.  
  704. +++++++++++++++++++++++++++
  705.  
  706. >From kcourte@advtech.uswest.com (Kevin Courter)
  707. Date: Fri, 02 Jun 1995 07:33:10 -0600
  708. Organization: U.S. West Technologies
  709.  
  710. In article <3qkob3$ppv@vermeer.ecs.soton.ac.uk>, tah92@ecs.soton.ac.uk
  711. (Thomas Haggie) wrote:
  712.  
  713. > Hello,
  714. >         I have been looking to see how to create a dialogue that will display
  715. > the completion status of some of my routines, to give an idea of how much
  716. [snip]
  717.  
  718. Hi Tom.  
  719.  
  720. I don't know about a bar that tells when you are turning into a 
  721. resident of Finland (ok, I couldn't resist) but a package that
  722. compiles under MPW, Think, and CodeWarrior is called CModalProgress
  723. and I got it from the CW site - here's the URL:
  724.  
  725. http://www.iquest.com/~fairgate/cw/pp-index.html
  726.  
  727. or
  728.  
  729. via anonymous ftp to ftp.iquest.com in      
  730. /pub/fairgate/pplant/CModalProgress.hqx.
  731.  
  732.  
  733. I think I had to tweak it a bit to build under MPW - CW is it's native
  734. environment.  I wrapped it up in a class to allow me to set it up and
  735. start it running in a very simple manner - here's the type of 
  736. interface I created as a wrapper:
  737.  
  738. #ifndef __CProgress__
  739. #define __CProgress__
  740.  
  741. class CModalProgress;
  742.  
  743. // The types of progress indicators available
  744. // Note: Progress Bar and Progress Text are both
  745. // of type kPercentageProgress
  746. static const short   kInfiniteProgress = 1;
  747. static const short   kPercentageProgress = 2;
  748.  
  749. // timeout == 60ths of a second until the progress box appears
  750. static const kStandardProgressTimeout = 60 * 2;    // 2 seconds
  751.  
  752.  
  753. class CProgress
  754. {
  755. public:
  756.    CProgress(  const char* operationName, 
  757.                short type,
  758.                short infDialogResID = 0,            
  759.                short progDialogResID = 0);
  760.                            
  761.    virtual           ~CProgress();
  762.    
  763.    virtual Boolean   StartProgress( long timeout);
  764.    virtual void      EndProgress( void );
  765.  
  766.       // Call SetProgressPercent periodically if you created 
  767.       // a kPercentProgress bar (i.e., it shows percent complete).
  768.    virtual Boolean SetProgressPercent( short percent, 
  769.                                        const char* minorMessage=NULL, 
  770.                                        const char* majorMessage = NULL );
  771.                                                          
  772.       // Call TickProgress periodically if you created a 
  773.       // kInfiniteProgress
  774. bar                                                         
  775.    virtual Boolean TickProgress( const char* minorMessage=NULL, 
  776.                                  const char* majorMessage = NULL );
  777.  
  778. protected:
  779.    virtual Boolean MakeProgress(  );
  780.  
  781. private:
  782.  
  783.    CModalProgress* fProgressDialog;
  784.    
  785.    long                 fProgressTimeoutTime;
  786.    Boolean              fProgressRunning;
  787.    Str255               fProgressOperationName;
  788.    Str255               fMajorMessage;
  789.    Str255               fMinorMessage;
  790.    
  791.    short                fType;
  792.    short                fInfiniteDialogResID;
  793.    short                fPercentageDialogResID;
  794. };
  795.  
  796.  
  797. It hides the creation of the dialog, and a few other details
  798. that aren't too bad anyway ( CModalProgress is a very nice
  799. package) but that I wanted to see even less of.  To make it
  800. easier to attach/detach progress views from a lengthy process (i.e.,
  801. if it's running without GUI or without interaction) I just put 
  802. a hook routine in the lengthy process's class, something like
  803. void DoProgress( float percentComplete )
  804. {
  805.    if ( fProgressFunction )
  806.    {
  807.       (*fProgressFunction)( percentComplete, "A message", "AnotherMessage" );
  808.    }
  809. }
  810.  
  811. That way the caller of the process class can determine whether
  812. there is a progress bar available and install it as a callback 
  813. function in the process class (or not).
  814.  
  815. Good luck, hope this helps some.  Email me if you have questions.
  816.  
  817. Kevin
  818.  
  819. -- 
  820. Kevin Courter
  821. US WEST Advanced Technologies    -    Boulder, Colorado
  822.  
  823. ---------------------------
  824.  
  825. >From steve.herman@msfc.nasa.gov (Steve Herman)
  826. Subject: How to get TCP-IP address?
  827. Date: Thu, 01 Jun 1995 11:34:10 -0500
  828. Organization: CSC
  829.  
  830. I'm looking for a quick and easy way to get the local machine's TCP/IP
  831. address from within a program.
  832.  
  833. Any pointers to documentation, or sample code would be appreciated.
  834.  
  835. Thanks,
  836. Steve
  837.  
  838. - --------------------------------------------------
  839. - Steve Herman - PrISMS
  840. - Computer Sciences Corporation
  841. - Marshall Space Flight Center
  842. - Huntsville, AL
  843. - --------------------------------------------------
  844.  
  845. +++++++++++++++++++++++++++
  846.  
  847. >From woody@alumni.cco.caltech.edu (William Edward Woody)
  848. Date: Thu, 01 Jun 1995 18:18:26 -0800
  849. Organization: In Phase Consulting
  850.  
  851. In article <steve.herman-010695113410@hermasj.msfc.nasa.gov>,
  852. steve.herman@msfc.nasa.gov (Steve Herman) wrote:
  853.  
  854. > I'm looking for a quick and easy way to get the local machine's TCP/IP
  855. > address from within a program.
  856. > Any pointers to documentation, or sample code would be appreciated.
  857.  
  858. Using MacTCP, you can get the IP address of the local system through
  859. calling the MacTCP driver's GetMyIPAddr control call.
  860.  
  861. This is documented on page 82 (Miscellaneous Interfaces) of the
  862. MacTCP programming manual.
  863.                 
  864.                                                 - Bill
  865.  
  866. -- 
  867. William Edward Woody  |  e-mail: woody@alumni.cco.caltech.edu
  868. In Phase Consulting   |  WWW:    http://www.alumni.caltech.edu/~woody
  869. 337 W. California #4  |  Fax:    (818) 502-1467
  870. Glendale, CA 91203    |  ICBM:   N:34.4' W:118.15'
  871.  
  872. +++++++++++++++++++++++++++
  873.  
  874. >From dwal@kimbark.uchicago.edu (David Walton)
  875. Date: Fri, 2 Jun 1995 03:35:10 GMT
  876. Organization: University of Chicago, Academic and Public Computing
  877.  
  878. In article <steve.herman-010695113410@hermasj.msfc.nasa.gov>,
  879. Steve Herman <steve.herman@msfc.nasa.gov> wrote:
  880.  
  881. >I'm looking for a quick and easy way to get the local machine's TCP/IP
  882. >address from within a program.
  883.  
  884.  
  885. Sorry; I forgot to add in my earlier post that you'll need to open the
  886. MacTCP driver, e.g., with
  887.  
  888.    error = OpenDriver("\p.IPP", &refNum);
  889.  
  890. and pass in refNum to the ioVRefNum field of the parameter block.
  891.  
  892. You are, BTW, talking about the machine's IP (user-configured)
  893. address, not the Ethernet (hardware) address?
  894.  
  895. -- 
  896. David Walton                    |  Macintosh Consultant & Graduate Student
  897. Mailto:David.Walton.10@nd.edu   |  Office of University Computing 
  898. http://www.nd.edu/~dwalton1/    |  Dept. History & Philosophy of Science
  899. Voice: 219-631-8024             |  University of Notre Dame
  900.  
  901. +++++++++++++++++++++++++++
  902.  
  903. >From j-norstad@nwu.edu (John Norstad)
  904. Date: Thu, 01 Jun 1995 23:51:22 -0500
  905. Organization: Northwestern University
  906.  
  907. In article <steve.herman-010695113410@hermasj.msfc.nasa.gov>,
  908. steve.herman@msfc.nasa.gov (Steve Herman) wrote:
  909.  
  910. > I'm looking for a quick and easy way to get the local machine's TCP/IP
  911. > address from within a program.
  912. > Any pointers to documentation, or sample code would be appreciated.
  913.  
  914. Here's the function I use in NewsWatcher. It's got both Open Transport
  915. code and MacTCP code. Note this function isn't reusable by itself. For
  916. details, see the "net.c." module in the full NewsWatcher source code,
  917. available at <URL:ftp://ftp.acns.nwu.edu/pub/newswatcher/>.
  918.  
  919. Notice how much easier Open Transport is to program to do this than is
  920. MacTCP. This is usually the case. 
  921.  
  922. /*----------------------------------------------------------------------------
  923.    NetGetMyAddr 
  924.    
  925.    Get this Mac's IP address.
  926.    
  927.    Exit: function result = error code.
  928.          *addr = the IP address of this Mac.
  929.          
  930.    With Open Transport, if the Mac has more than one IP interface, the
  931.    IP address of the default interface is returned.
  932. - --------------------------------------------------------------------------*/
  933.  
  934. OSErr NetGetMyAddr (unsigned long *addr)
  935. {
  936.    struct GetAddrParamBlock pBlock;
  937.    OSErr err = noErr, giveTimeErr = noErr;
  938.    static Boolean gotIt = false;
  939.    static unsigned long myAddr;
  940.    InetInterfaceInfo ifaceInfo;
  941.    
  942.    if (!gotIt) {
  943.    
  944.       if (gHaveOT) {
  945.       
  946.          err = OTInetGetInterfaceInfo(&ifaceInfo, kDefaultInetInterface);
  947.          if (err != noErr) return TranslateErrorCode(err);
  948.          myAddr = ifaceInfo.fAddress;
  949.       
  950.       } else {
  951.       
  952.          memset(&pBlock, 0, sizeof(pBlock));
  953.          pBlock.ioResult = 1;
  954.          pBlock.csCode = ipctlGetAddr;
  955.          pBlock.ioCRefNum = gRefNum;
  956.          PBControlAsync((ParmBlkPtr)&pBlock);
  957.          while (pBlock.ioResult > 0) {
  958.             giveTimeErr = (*gGiveTime)();
  959.             if (err == noErr) err = giveTimeErr;
  960.          }
  961.          if (err != noErr) return TranslateErrorCode(err);
  962.          err = pBlock.ioResult;
  963.          if (err != noErr) return TranslateErrorCode(err);
  964.          myAddr = pBlock.ourAddress;
  965.          
  966.       }
  967.       
  968.       gotIt = true;
  969.    }
  970.    
  971.    *addr = myAddr;
  972.    return noErr;
  973. }
  974.  
  975. -- 
  976. John Norstad
  977. Academic Computing and Network Services
  978. Northwestern University
  979. j-norstad@nwu.edu
  980. http://charlotte.acns.nwu.edu/jln/jln.html
  981.  
  982. +++++++++++++++++++++++++++
  983.  
  984. >From David.Walton.10@nd.edu (David Walton)
  985. Date: Thu, 01 Jun 1995 14:17:18 -0500
  986. Organization: University of Notre Dame, OUC
  987.  
  988. In article <steve.herman-010695113410@hermasj.msfc.nasa.gov>,
  989. steve.herman@msfc.nasa.gov (Steve Herman) wrote:
  990.  
  991. > I'm looking for a quick and easy way to get the local machine's TCP/IP
  992. > address from within a program.
  993.  
  994.  
  995. #include <MacTCP.h>
  996.  
  997. OSErr GetMyIPAddress(ip_addr *myAddr, long *myNetMask, short drvrRefNum)
  998. {  
  999.    GetAddrParamBlock    PB;
  1000.    OSErr                error;
  1001.    
  1002.    /* Be sure to zero out appropriate fields, too */
  1003.    PB.ioVRefNum = drvrRefNum;   
  1004.    PB.ioCRefNum = drvrRefNum;
  1005.    PB.csCode = ipctlGetAddr;
  1006.    error = PBControl((ParmBlkPtr)&PB, false);
  1007.    if (!error)
  1008.    {
  1009.       *myAddr = PB.ourAddress;
  1010.       *myNetMask = PB.ourNetMask;
  1011.    }
  1012.    return(error);
  1013. }
  1014.  
  1015. -- 
  1016. David Walton                    |  Macintosh Consultant & Graduate Student
  1017. Mailto:David.Walton.10@nd.edu   |  Office of University Computing 
  1018. http://www.nd.edu/~dwalton1/    |  Dept. History & Philosophy of Science
  1019. Voice: 219-631-8024             |  University of Notre Dame
  1020.  
  1021.     "Beware the advice of successful people; they do not seek company."   
  1022.  
  1023. +++++++++++++++++++++++++++
  1024.  
  1025. >From Toby <toby@mmcorp.com>
  1026. Date: 6 Jun 1995 00:51:48 GMT
  1027. Organization: MultiMedia Corporation
  1028.  
  1029. Also note that whenver you make a TCP call your TCPiopb will have your IP
  1030. address in it.  That is, if you open MacTCP and then you want your IP
  1031. address you must make the PBControl call (as demonstrated in this thread)
  1032. but if you have made some other TCP calls (like opening a stream) then
  1033. the TCPiopb that you used for that stream will have your IP address
  1034. stored in it.
  1035.  
  1036. Just a thought...someone might be interested.
  1037.  
  1038. toby@mmcorp.com
  1039.  
  1040. ---------------------------
  1041.  
  1042. >From graham@impro.demon.co.uk (Graham)
  1043. Subject: PICS file format?
  1044. Date: 31 May 1995 09:39:05 +0100
  1045. Organization: Demon Internet News Service
  1046.  
  1047. Does anyone know how PICS files are laid out and how to parse them? I
  1048. think they are just a series of PICT s, but beyond that I don't know.
  1049.  
  1050. any help appreciated, many thanks in advance, Graham.
  1051.  
  1052. +++++++++++++++++++++++++++
  1053.  
  1054. >From ldo@waikato.ac.nz (Lawrence D9Oliveiro)
  1055. Date: Thu, 01 Jun 1995 14:43:14 +1200
  1056. Organization: University of Waikato
  1057.  
  1058. In article <3qh9v9$69b@imp.demon.co.uk>, graham@impro.demon.co.uk (Graham)
  1059. wrote:
  1060.  
  1061. >Does anyone know how PICS files are laid out and how to parse them? I
  1062. >think they are just a series of PICT s, but beyond that I don't know.
  1063.  
  1064. Yup, that is the essence of a PICS file--a sequence of PICT resources,
  1065. numbered from 128. The bounds of the first one defines the bounds of the
  1066. animation; as I recall, it is permissible for the remaining ones to to
  1067. cover just parts of the area of the first one, which would speed up
  1068. animations if you just draw them one on top of the other.
  1069.  
  1070. There is also an option for an INFO resource, which contains things like
  1071. the depth of the images, the signature of the application that created the
  1072. file, and other less-than-vitally-important stuff.
  1073.  
  1074. Here are the data structure definitions that I used for my Movie
  1075. Conversion utility
  1076. <ftp://sumex-aim.stanford.edu/grf/util/movie-conversion-hc.hqx>:
  1077.  
  1078. DEFINITION MODULE PICSFormat;
  1079. (*
  1080.     Definitions for the PICS basic animation format.
  1081.  
  1082.     Written by LDO 1992 January 3.
  1083.     Last modified 1992 January 4.
  1084. *)
  1085.  
  1086.     FROM Types IMPORT
  1087.         OSType;
  1088.  
  1089.     CONST
  1090.         PICSFileType = 050494353H (* 'PICS' *);
  1091.  
  1092.     CONST
  1093.         PictureResType = 050494354H (* 'PICT' *);
  1094.         FirstPictureResID = 128; (* picture frames are numbered
  1095. sequentially from this *)
  1096.         InfoResType = 0494E464FH (* 'INFO' *);
  1097.         InfoResID = 128; (* ID of optional INFO resource *)
  1098.  
  1099.     CONST
  1100.         PICSInfoVersion = 0; (* current version of INFO structure *)
  1101.     TYPE
  1102.         PICSInfoRecord = (* layout of INFO resource *)
  1103.             RECORD
  1104.                 BWColor : INTEGER; (* 0 for B/W, 1 for color/grayscale *)
  1105.                 PixelDepth : INTEGER;
  1106.                 Speed : INTEGER; (* positive frames/second or negative
  1107. seconds/frame *)
  1108.                 Version : INTEGER; (* = PICSInfoVersion *)
  1109.                 Creator : OSType;
  1110.                 LargestPictureSize : LONGCARD (* size in bytes of largest
  1111. picture, or 0 if unknown *)
  1112.             END (*RECORD*);
  1113.         PICSInfoPtr = POINTER TO PICSInfoRecord;
  1114.         PICSInfoHandle = POINTER TO PICSInfoPtr;
  1115.  
  1116. END PICSFormat.
  1117.  
  1118. ---------------------------
  1119.  
  1120. >From jda@Box-j.nih.gov (jda)
  1121. Subject: PPC and SIZE resource
  1122. Date: Tue, 30 May 1995 16:21:15 GMT
  1123. Organization: National Institutes of Health
  1124.  
  1125. Can anyone tell me how to set the memory partitions in the SIZE
  1126. resource for fat applications? There is nothing in the IM PPC book
  1127. about this. I want to have different partitions for the two operating
  1128. environments, obviously, but it's not obvious how to set them
  1129. separately.
  1130.  
  1131. I know what ids of -1 and 0 mean, but what does id 1 mean?
  1132.  
  1133. Thanks for any reply,
  1134.  
  1135. Jon
  1136.  
  1137. jda@Box-j.nih.gov
  1138.  
  1139. +++++++++++++++++++++++++++
  1140.  
  1141. >From jens_alfke@powertalk.apple.com (Jens Alfke)
  1142. Date: Thu, 1 Jun 1995 13:38:50 GMT
  1143. Organization: Apple Computer, Inc.
  1144.  
  1145. In article <1995May30.162115.14687@alw.nih.gov>, jda@Box-j.nih.gov (jda) wrote:
  1146.  
  1147. > Can anyone tell me how to set the memory partitions in the SIZE
  1148. > resource for fat applications? There is nothing in the IM PPC book
  1149. > about this. I want to have different partitions for the two operating
  1150. > environments, obviously, but it's not obvious how to set them
  1151. > separately.
  1152.  
  1153. You can't set separate partition sizes for PPC and 68k. The system will,
  1154. however, automatically decrease your partition size by the size of your
  1155. code fragment when VM is turned on, since your fragment occupies no
  1156. virtual address space in that case.
  1157. If you really need to do this, build separate 68k and PPC apps. I tend not
  1158. to like fat apps since they take up extra disk space...
  1159.  
  1160. (The SIZE 1 resource is added by the Finder to store the user's customized
  1161. setting for the partition size if they modify it in the Get Info window.
  1162. It overrides SIZE -1. I'm not sure what SIZE 0 does.)
  1163.  
  1164.  
  1165. Jens Alfke_________OpenDoc Geometer_________jens_alfke@powertalk.apple.com
  1166.                                            OpenDoc info: FTP to CILabs.org
  1167.  
  1168.                 LLAMA: NO FEAR OF SPIKES
  1169.  
  1170. +++++++++++++++++++++++++++
  1171.  
  1172. >From jwbaxter@olympus.net (John W. Baxter)
  1173. Date: Fri, 02 Jun 1995 08:12:34 -0700
  1174. Organization: Internet for the Olympic Peninsula
  1175.  
  1176. In article <jens_alfke-0106951438500001@jensothermac.apple.com>,
  1177. jens_alfke@powertalk.apple.com (Jens Alfke) wrote:
  1178.  
  1179. > (The SIZE 1 resource is added by the Finder to store the user's customized
  1180. > setting for the partition size if they modify it in the Get Info window.
  1181. > It overrides SIZE -1. I'm not sure what SIZE 0 does.)
  1182.  
  1183.   SIZE -1 is the developer's original
  1184.   SIZE 0 is what Finder has long created when the user changes the
  1185. "preferred" partition size.  Holds "suggested" and "preferred"
  1186.   SIZE 1 was added when the "minimum" size was added to the mix (Sys
  1187. 7???--I forget), since there are only two size values in the resource
  1188. format.  Holds "suggested" and "minimum".
  1189.  
  1190. Yet one more kludge brought on by the non-black-box nature of old system
  1191. structures, along with all the extra barnacles hung on the window record
  1192. for color windows, and <your favorite example here>
  1193.     --John
  1194.  
  1195. -- 
  1196. John Baxter    Port Ludlow, WA, USA  [West shore, Puget Sound]
  1197.        I don't do windows.
  1198.    jwbaxter@pt.olympus.net
  1199.  
  1200. ---------------------------
  1201.  
  1202. >From jons@ivi.com (Jon Steinmetz)
  1203. Subject: Pausing SndPlayDoubleBuffer
  1204. Date: Fri, 19 May 1995 13:50:47 -0600
  1205. Organization: IVI Publishing, Inc.
  1206.  
  1207.   How does one pause the playing of SndPlayDoubleBuffer?  Both sending an
  1208. immediate pauseCmd and calling SndPauseFilePlay do not seem to work.  Do I
  1209. have to implement this myself?
  1210.  
  1211. -- 
  1212. // Jon Steinmetz
  1213. // IVI Publishing, Inc.
  1214. //    work:     jons@ivi.com
  1215. //    personal: stein045@gold.tc.umn.edu
  1216. //    web page: http://www.umn.edu/nlhome/g262/stein045/
  1217.  
  1218. +++++++++++++++++++++++++++
  1219.  
  1220. >From jmunkki@beta.hut.fi (Juri Munkki)
  1221. Date: 23 May 1995 14:17:10 GMT
  1222. Organization: Helsinki University of Technology
  1223.  
  1224. In article <jons-1905951350470001@199.199.200.217> jons@ivi.com (Jon Steinmetz) writes:
  1225. >  How does one pause the playing of SndPlayDoubleBuffer?  Both sending an
  1226. >immediate pauseCmd and calling SndPauseFilePlay do not seem to work.  Do I
  1227. >have to implement this myself?
  1228.  
  1229. Sounds like the obvious solution to me. Or you could close the channel and
  1230. open it again, if you expect a very long pause.
  1231.  
  1232. -- 
  1233. Juri Munkki jmunkki@hut.fi      There ain't no such thing as a shareware lunch.
  1234. http://www.hut.fi/~jmunkki              Windsurfing: Faster than the wind.
  1235.  
  1236. +++++++++++++++++++++++++++
  1237.  
  1238. >From SuperStudio <100274.1374@CompuServe.COM>
  1239. Date: 28 May 1995 14:00:08 GMT
  1240. Organization: via CompuServe Information Service
  1241.  
  1242. A while ago, Dev Support told me that you had to set the rate to 0. 
  1243. It is kind of sad if that member of Dev Support did not think it is 
  1244. worth publicizing the response since it is an admittedly unobvious 
  1245. solution.  Anyhow, here is the code:
  1246. Pause sound :                        
  1247. err = HSndDoImmediate(getRateCmd, 0, (long)&SndPaused);
  1248. err = HSndDoImmediate(rateCmd, 0, 0);
  1249. Resume:
  1250. err = HSndDoImmediate(rateCmd, 0, SndPaused);
  1251.  
  1252. OSErr HSndDoImmediate(cmdType, param1, param2)
  1253. {
  1254.         cmd.cmd = cmdType;
  1255.         cmd.param1 = param1;
  1256.         cmd.param2 = param2;
  1257.  
  1258.         return SndDoImmediate(SndChan, &cmd);
  1259. }
  1260.  
  1261. ---------------------------
  1262.  
  1263. >From sbryan@maroon.tc.umn.edu (Steve Bryan)
  1264. Subject: QD3d in develop 22
  1265. Date: Thu, 25 May 1995 16:29:25 GMT
  1266. Organization: Sexton Software
  1267.  
  1268. All you developers who are interested in hands on access to QuickDraw 3d
  1269. just watch your mailbox for develop issue 22 to arrive (of course you
  1270. subscribe). Besides being the feature article (by Pablo Fernicola and Nick
  1271. Thompson) it looks like all the needed software (libraries, header files)
  1272. is included. There is even a disk version of the QD3d volume of Inside
  1273. Mac.
  1274.  
  1275. -- 
  1276. |Steve Bryan                Internet: sbryan@maroon.tc.umn.edu
  1277. |Sexton Software          CompuServe: 76545,527
  1278. |Minneapolis, MN 55415           Fax: (612) 929-1799
  1279. |PGP key fingerprint: B4 C6 E2 A6 5F 87 57 7D  E1 8C A6 9B A9 BE 96 CB
  1280.  
  1281. +++++++++++++++++++++++++++
  1282.  
  1283. >From dpfeedback@applelink.apple.com (Dan Peterson)
  1284. Date: Tue, 30 May 1995 06:27:33 -0700
  1285. Organization: Apple Developer Press
  1286.  
  1287. In article <sbryan-2505951130390001@dialup-2-105.gw.umn.edu>,
  1288. sbryan@maroon.tc.umn.edu (Steve Bryan) wrote:
  1289.  
  1290. > All you developers who are interested in hands on access to QuickDraw 3d
  1291. > just watch your mailbox for develop issue 22 to arrive (of course you
  1292. > subscribe). Besides being the feature article (by Pablo Fernicola and Nick
  1293. > Thompson) it looks like all the needed software (libraries, header files)
  1294. > is included. There is even a disk version of the QD3d volume of Inside
  1295. > Mac.
  1296.  
  1297. ...and the QD3D database for Toolbox Assistant will be available within
  1298. the next week or so. Keep your browser tuned to:
  1299. http://www.info.apple.com/dev/MPTA.html
  1300.  
  1301. Dan Peterson,
  1302. Developer Press,
  1303. Apple Computer, Inc.
  1304.  
  1305. ---------------------------
  1306. >From dpfeedback@applelink.apple.com (Dan Peterson)
  1307. Subject: QuickDraw 3D Database for Toolbox Assistant now available!
  1308. Date: Wed, 07 Jun 1995 10:26:40 -0700
  1309. Organization: Apple Developer Press
  1310.  
  1311. Hey,
  1312.  
  1313. Just a quick note to let you know that the QuickDraw 3D database for
  1314. Macintosh Programmer's Toolbox Assistant is now available via our Web site
  1315. at:
  1316. http://www.info.apple.com/dev/MPTA.html
  1317.  
  1318. if you want direct access to the software on our FTP site:
  1319.  
  1320. host: ftp.info.apple.com
  1321. path:
  1322. Apple.Support.Area/Developer_Services/Technical_Documentation/Toolbox_Assistant_Updates/
  1323.  
  1324. This new QuickDraw 3D database requires the latest version of the
  1325. "Routines A...Z and Mgr.qv" file, also available at the aforementioned
  1326. locations.
  1327.  
  1328. This is part of our continuing effort to provide up-to-date reference
  1329. information in a timely manner.
  1330.  
  1331. As always, please send comments and suggestions regarding Macintosh
  1332. Programmer's Toolbox Assistant to dpfeedback@applelink.apple.com.
  1333.  
  1334.  
  1335. Thanks,
  1336. Dan Peterson,
  1337. Developer Press,
  1338. Apple Computer, Inc.
  1339.  
  1340. ---------------------------
  1341.  
  1342. >From joel@phantom.itg.ti.com (Joel Quejada)
  1343. Subject: Techniques for collision detection
  1344. Date: 17 May 1995 13:36:57 GMT
  1345. Organization: Texas Instruments, Inc.
  1346.  
  1347.  
  1348. What are the different techniques used for detecting collisions between
  1349. sprites? I use with a great deal of success the "union rect" technique,
  1350. where you compare two sprites' rects, if they overlap then you assume a 
  1351. collision just happened.
  1352.  
  1353. However, the technique above only works great for rectangular (or
  1354. mostly rectangular) sprites. How about for more irregular sprites? 
  1355. What types of collision detection techniques are used for these?
  1356.  
  1357. Joel
  1358.  
  1359. --
  1360.  
  1361. +++++++++++++++++++++++++++
  1362.  
  1363. >From David Hay <djh>
  1364. Date: 17 May 1995 14:38:56 GMT
  1365. Organization: Los Alamos National Laboratory
  1366.  
  1367. joel@phantom.itg.ti.com (Joel Quejada) wrote:
  1368. >
  1369. >What are the different techniques used for detecting collisions between
  1370. >sprites? I use with a great deal of success the "union rect" technique,
  1371. >where you compare two sprites' rects, if they overlap then you assume a 
  1372. >collision just happened.
  1373. >
  1374. >However, the technique above only works great for rectangular (or
  1375. >mostly rectangular) sprites. How about for more irregular sprites? 
  1376. >What types of collision detection techniques are used for these?
  1377. >
  1378.  
  1379.         I think that the method you use depends a great deal on the sprites
  1380.         that are colliding. For example, if you have to roughly square
  1381.         sprites, then just checking for rectangle over lap is enough. But if
  1382.         you have a couple balls bouncing off each other, it might make sense
  1383.         to see if the balls are within a certain distance of each other.
  1384.  
  1385.         One method that I just thought of would be to make a region out of
  1386.         each sprite's mask. Then intersect the two regions and if the resulting
  1387.         region is not empty, then the two have collided. I haven't tried this
  1388.         and it may be too slow to use in a game, but might be worth a try.
  1389.  
  1390.         What SpriteWorld does is just test if the rectangles overlap and call
  1391.         a user defined routine if they do, allowing more refined collision
  1392.         detection to occur once the possibility of a collision has been
  1393.         established. It could be that a combination of this technique and
  1394.         the region intersection I suggested might work pretty well. (My
  1395.         fingers are starting to get itchy to try this out :-)
  1396.  
  1397.         Hope that helps!
  1398. -- 
  1399. - -----------------------------------------------------------------------+
  1400. David Hay                         "Failure has a thousand explanations.  |
  1401. hay@cs.colorado.edu                Success doesn't need one."            |
  1402. University of Colorado, Boulder          -Sir Alec Guinness  _-^-_       |
  1403. Finger for PGP Public Key                                   / o o \      |
  1404. http://ugrad-www.cs.colorado.edu/~hay/Home.html -------OOO-'---U---`-OOO-+
  1405.  
  1406.  
  1407. +++++++++++++++++++++++++++
  1408.  
  1409. >From Francois-Regis.Degott@imag.fr (F. Degott)
  1410. Date: 17 May 1995 14:58:57 GMT
  1411. Organization: LMC-IMAG Grenoble France
  1412.  
  1413. In article <3pcu5p$rsu@dsk92.itg.ti.com>, joel@phantom.itg.ti.com (Joel
  1414. Quejada) wrote:
  1415.  
  1416. >What are the different techniques used for detecting collisions between
  1417. >sprites? I use with a great deal of success the "union rect" technique,
  1418. >where you compare two sprites' rects, if they overlap then you assume a 
  1419. >collision just happened.
  1420. >
  1421. >However, the technique above only works great for rectangular (or
  1422. >mostly rectangular) sprites. How about for more irregular sprites? 
  1423. >What types of collision detection techniques are used for these?
  1424. >
  1425.  
  1426.  
  1427. Hi Joel,
  1428.  
  1429. i don't know the techniques used for that,
  1430. but my idea about this subject is to use Region,
  1431. because there is a proc. SectRgn who calculate
  1432. the intersection of two rgns (see description below).
  1433.  
  1434. PROCEDURE SectRgn (srcRgnA,srcRgnB,dstRgn: RgnHandle);
  1435.  
  1436.     SectRgn calculates the intersection of two regions and places the
  1437. intersection in a third region. THIS DOES NOT CREATE THE DESTINATION
  1438. REGION:  you must use NewRgn to create the dstRgn before you call
  1439. SectRgn. The dstRgn can be one of the source regions, if desired.
  1440.  
  1441.     If the regions do not intersect, or one of the regions is empty, the
  1442. destination is set to the empty region (X,X,X,X).
  1443.  
  1444. With this proc., the method for detecting sprites collisions seems easy:
  1445.  
  1446. - set RgnA (describe the rgn of sprite A)
  1447. - set RgnB (describe the rgn of sprite B)
  1448. - init. CollisionRgn
  1449. - SectRgn(RgnA,RgnB,CollisionRgn)
  1450. - if CollisionRgn is the empty rgn
  1451.       then there is no collision between A and B
  1452.       else there is a collision
  1453. - ...
  1454.  
  1455. Hope this helps.
  1456. Fr
  1457. _____________________________________________________
  1458. F.R. Degott  (Francois-Regis.Degott@imag.fr)
  1459. LogiMath at Lab. LMC-IMAG - Univ. Joseph Fourier - Grenoble - France
  1460.  
  1461. +++++++++++++++++++++++++++
  1462.  
  1463. >From am4001@kestrel.fen.bris.ac.uk (Alex Metcalf)
  1464. Date: Thu, 18 May 1995 11:49:56 GMT
  1465. Organization: University of Bristol, England
  1466.  
  1467. : In article <3pcu5p$rsu@dsk92.itg.ti.com>, joel@phantom.itg.ti.com (Joel
  1468. : Quejada) wrote:
  1469.  
  1470. : >What are the different techniques used for detecting collisions between
  1471. : >sprites? I use with a great deal of success the "union rect" technique,
  1472. : >where you compare two sprites' rects, if they overlap then you assume a 
  1473. : >collision just happened.
  1474. : >
  1475. : >However, the technique above only works great for rectangular (or
  1476. : >mostly rectangular) sprites. How about for more irregular sprites? 
  1477. : >What types of collision detection techniques are used for these?
  1478.  
  1479.         For most sprite games there is a general standard of doing a quick
  1480. check and then doing some more specific checking.
  1481.  
  1482.         If you have the rectangles of the sprites then you can start with
  1483. a simple SectRect call: for some games this is in fact all you need
  1484. (Maniac springs to mind :).
  1485.  
  1486.         However, you may wish to use something more accurate after you've
  1487. determined that the rectangles are touching, and the best approach is to
  1488. actually check the overlapping of the sprites 'pixel-by-pixel'. One method
  1489. is to draw one sprite in one position, and as you're drawing the second
  1490. sprite over top check, for each pixel, whether the destination is the
  1491. 'black' entry in your colour palette (it's almost always 0 or 255, I
  1492. can't remember which!). Of course, you can think of interesting ways of
  1493. optimising this approach, but this is the general idea.
  1494.  
  1495.         Hope this helps! If you have any other questions, I'd be happy to
  1496. try and help more.
  1497.  
  1498.  
  1499.  
  1500.  
  1501.         Alex
  1502.  
  1503. --
  1504. Alex Metcalf             Windows 95: Just another
  1505. am4001@bristol.ac.uk        pane in the glass.
  1506.  
  1507. http://www.fen.bris.ac.uk/students/am4001/welcome.html
  1508.  
  1509.  
  1510. +++++++++++++++++++++++++++
  1511.  
  1512. >From Josh Brown <jobrown@sal.cs.utah.edu>
  1513. Date: Thu, 18 May 1995 04:25:52 -0600
  1514. Organization: University of Utah Computer Science Department
  1515.  
  1516.  
  1517.  
  1518. On 17 May 1995, Joel Quejada wrote:
  1519.  
  1520. > What are the different techniques used for detecting collisions between
  1521. > sprites? I use with a great deal of success the "union rect" technique,
  1522. > where you compare two sprites' rects, if they overlap then you assume a 
  1523. > collision just happened.
  1524. > However, the technique above only works great for rectangular (or
  1525. > mostly rectangular) sprites. How about for more irregular sprites? 
  1526. > What types of collision detection techniques are used for these?
  1527.  
  1528. Joel,
  1529.  
  1530.   One way to do it is to find the SectRect of the two sprites, and then 
  1531. use a bit routine (similar to a blitter) to see if any non-clear 
  1532. (backgroud color) pixels in each sprite pixmap or bitmap overlap. This is 
  1533. not unreasonably slow, since generally the overlapping area will be very 
  1534. small. It should give you pixel-accurate collision checking.
  1535.  
  1536.   My experience is that the faster your sprites are moving, the less 
  1537. precision in collision detection you need.
  1538.  
  1539. -josh brown
  1540.  
  1541. +++++++++++++++++++++++++++
  1542.  
  1543. >From mick@netcom.com (Mick Foley)
  1544. Date: Fri, 19 May 1995 07:42:47 GMT
  1545. Organization: NETCOM On-line Communication Services (408 261-4700 guest)
  1546.  
  1547. If your shapes are both somewhat round, you can check the distance between
  1548. the center of the two shapes. The pure way would be:
  1549.  
  1550. if ( sqrt( dx * dx + dy * dy ) < ( r1 + r2 ) )
  1551.    {
  1552.       // potential collision
  1553.    }
  1554.  
  1555. // dx = x distance between centers
  1556. // dy = y distance between centers
  1557. // r1 = radius of shape 1
  1558. // r2 = radius of shape 2
  1559.  
  1560. However, square roots are slow, so instead check against the square of
  1561. each side:
  1562.  
  1563. if ( ( dx * dx + dy + dy ) < ( r1 + r2 ) * ( r1 + r2 ) )
  1564.    {
  1565.       // potential collision
  1566.    }
  1567.  
  1568. While this method is not generally useful, it can be very useful for some
  1569. cases and it is suprisingly fast.
  1570.  
  1571. Mick
  1572.  
  1573. +++++++++++++++++++++++++++
  1574.  
  1575. >From christer@cs.umu.se (Christer Ericson)
  1576. Date: Fri, 19 May 1995 13:46:38 GMT
  1577. Organization: Dept. of Computing Science, Umea Univ., 901 87 Umea, Sweden
  1578.  
  1579. In <D8rvJ9.8yx@info.bris.ac.uk> am4001@kestrel.fen.bris.ac.uk (Alex Metcalf) writes:
  1580. >: In article <3pcu5p$rsu@dsk92.itg.ti.com>, joel@phantom.itg.ti.com (Joel
  1581. >: Quejada) wrote:
  1582. >
  1583. >: >What are the different techniques used for detecting collisions between
  1584. >: >sprites? [...]
  1585. >
  1586. >       For most sprite games there is a general standard of doing a quick
  1587. >check and then doing some more specific checking.
  1588. >[...]
  1589. >       However, you may wish to use something more accurate after you've
  1590. >determined that the rectangles are touching, and the best approach is to
  1591. >actually check the overlapping of the sprites 'pixel-by-pixel'. One method
  1592. >is to draw one sprite in one position, and as you're drawing the second
  1593. >sprite over top check, for each pixel, whether the destination is the
  1594. >'black' entry in your colour palette (it's almost always 0 or 255, I
  1595. >can't remember which!). Of course, you can think of interesting ways of
  1596. >optimising this approach, but this is the general idea.
  1597.  
  1598. What Alex describes is the basic approach to pixel exact collision
  1599. detection which, while being "perfect", is slow as molasses. Much better
  1600. is the pixel-span approach to pixel exact collision detection: for each
  1601. scanline of the sprite you have two additional values, the offsets (relative
  1602. the left side of the bounding box) to the first and last non-transparent
  1603. pixel of that scanline. Checking whether two sprites collide now involves
  1604. an initial bounding box check, and if the bounding boxes overlap you
  1605. check if these spans overlap for the relevant scanlines. (If needed
  1606. keep a similar structure for each column of the sprite as well.)
  1607.  
  1608. These are several other approaches, for both approximate and exact
  1609. collision detection, but the pixel-span method gives a very nice
  1610. result, is fast, and is easy to code. I only wish Swoop used it
  1611. instead of a badly designed bounding box only approach. :-(
  1612.  
  1613.  
  1614. Christer Ericson. <this space for hire> http://www.cs.umu.se/~christer/
  1615. phone: +46-90-16 67 94, fax: +46-90-16 61 26, email: christer@cs.umu.se
  1616. Department of Computing Science, Umea University, S-901 87 UMEA, SWEDEN
  1617.  
  1618. +++++++++++++++++++++++++++
  1619.  
  1620. >From al@crucible.powertools.com (Al Evans)
  1621. Date: 18 May 1995 09:01:46 -0500
  1622. Organization: Powertools, Austin, Texas
  1623.  
  1624. In article <3pcu5p$rsu@dsk92.itg.ti.com>,
  1625.  
  1626. Joel Quejada <joel@phantom.itg.ti.com> wrote:
  1627. >
  1628. >What are the different techniques used for detecting collisions between
  1629. >sprites? I use with a great deal of success the "union rect" technique,
  1630. >where you compare two sprites' rects, if they overlap then you assume a 
  1631. >collision just happened.
  1632. >
  1633. >However, the technique above only works great for rectangular (or
  1634. >mostly rectangular) sprites. How about for more irregular sprites? 
  1635. >What types of collision detection techniques are used for these?
  1636.  
  1637. In developing the Graphic Elements system, I tested several different
  1638. collision-detection algorithms, and arrived at the following, which
  1639. gives a good compromise between speed and completeness:
  1640.  
  1641. First, intersect the rectangle of the object under consideration and
  1642. the rectangle of each object with which it might collide. This can
  1643. be done very rapidly, and eliminates most of the possibilities. (Hint:
  1644. an intersect-rect function is easy to write, and you probably want to
  1645. avoid the trap overhead of 68K Macs....)
  1646.  
  1647. Second, if the intersection is non-empty, compare the resulting rectangle
  1648. with that of the object under consideration. It is easy to determine
  1649. the octant in which the collision took place on the basis of this
  1650. comparison, and for many cases an eighth of a circle is close enough for
  1651. use as a "direction".
  1652.  
  1653. I also found it desirable to keep track of whether a collision was beginning,
  1654. continuing, or ending.
  1655.  
  1656. In Graphic Elements, the individual objects' collision functions are
  1657. called at this point (for both the collider and the "collidee"). The
  1658. above information is passed on to the collision function. When necessary,
  1659. this function can proceed to perform whatever additional tests are
  1660. deemed necessary by the application programmer -- for example, anding
  1661. the bitmaps of the relevant sections of the objects to see whether they
  1662. are "actually" touching.
  1663.  
  1664.                                         --Al Evans--
  1665. -- 
  1666. Al Evans                | Graphic Elements: A new standard for 
  1667. ________________________| high-performance interactive Macintosh graphics.
  1668. al@powertools.com       | Available from mac.archive.umich.edu
  1669. - ----------------------| /mac/development/libraries/graphicelements2.sit.hqx
  1670.  
  1671. +++++++++++++++++++++++++++
  1672.  
  1673. >From snozer@cats.ucsc.edu (Daniel Craig Jalkut)
  1674. Date: 22 May 1995 18:49:06 GMT
  1675. Organization: University of California, Santa Cruz
  1676.  
  1677.  
  1678. In <Pine.SOL.3.91.950518042022.16139F-100000@sal.cs.utah.edu> Josh Brown <jobrown@sal.cs.utah.edu> writes:
  1679.  
  1680.  
  1681.  
  1682. >On 17 May 1995, Joel Quejada wrote:
  1683.  
  1684. >> What are the different techniques used for detecting collisions between
  1685. >> sprites? I use with a great deal of success the "union rect" technique,
  1686. >> where you compare two sprites' rects, if they overlap then you assume a 
  1687. >> collision just happened.
  1688. >> 
  1689. >> However, the technique above only works great for rectangular (or
  1690. >> mostly rectangular) sprites. How about for more irregular sprites? 
  1691. >> What types of collision detection techniques are used for these?
  1692.  
  1693. Don't forget that your irregular shaped objects can be represented by 
  1694. a number of regular rectangles.  With a humanoid character, for instance,
  1695. you could have a separate rectangle for head, torso, each arm, and each leg.
  1696.  
  1697. This allows you to have a fairly fast collision detection, and some 
  1698. flexibility with shape. It also lets you check collisions differently if 
  1699. your "sprite" changes form, as a humanoid would, when moving its arms. 
  1700.  
  1701. -- 
  1702.  ____
  1703. / /\ \  Daniel Craig Jalkut     "All I know is that I don't know nothing,
  1704. -/--\-  snozer@cats.ucsc.edu    and that's FINE" -- Operation Ivy
  1705. X____X  It's the job-seeking time of the year -- email for resume.
  1706.  
  1707.  
  1708. +++++++++++++++++++++++++++
  1709.  
  1710. >From bc@wetware.com (monsieur HAINEUX)
  1711. Date: Tue, 23 May 1995 18:25:34 -0700
  1712. Organization: Stripey Fruit CompuCo
  1713.  
  1714. In article <D8tvLs.CKr@cs.umu.se>, christer@cs.umu.se (Christer Ericson) wrote:
  1715. |   What Alex describes is the basic approach to pixel exact collision
  1716. |   detection which, while being "perfect", is slow as molasses. Much better
  1717. |   is the pixel-span approach to pixel exact collision detection: for each
  1718. |   scanline of the sprite you have two additional values, the offsets (relative
  1719. |   the left side of the bounding box) to the first and last non-transparent
  1720. |   pixel of that scanline. Checking whether two sprites collide now involves
  1721. |   an initial bounding box check, and if the bounding boxes overlap you
  1722. |   check if these spans overlap for the relevant scanlines. (If needed
  1723. |   keep a similar structure for each column of the sprite as well.)
  1724.  
  1725. In fact, this is how SectRgn works.
  1726.  
  1727. bill coderre
  1728.  
  1729. +++++++++++++++++++++++++++
  1730.  
  1731. >From ola.berg@digit.se (Ola Berg)
  1732. Date: 26 May 1995 16:38:06 GMT
  1733. Organization: Digit
  1734.  
  1735. Squareroots, sin() etc are slow but when using them as calculations for gfx,
  1736. then you can get enough accuracy by precalculate a number of sqr()'s and
  1737. sin()'s (and cos()'s ), and store them in an array. Then, instead of
  1738. calculating, just jump into the array! This is an old tech I know, but it
  1739. worked fine for CBM-64 and Sinclair SPECTRUM and it shouldn't be forgotten
  1740. even in these RISCy days right? ;-)
  1741.  
  1742. blsu!
  1743. Ola
  1744.  
  1745. +++++++++++++++++++++++++++
  1746.  
  1747. >From bc@wetware.com (monsieur HAINEUX)
  1748. Date: Tue, 30 May 1995 15:03:14 -0700
  1749. Organization: Stripey Fruit CompuCo
  1750.  
  1751. In article <3415072701.126051944@digit.se>, ola.berg@digit.se wrote:
  1752. |   Squareroots, sin() etc are slow but when using them as calculations for gfx,
  1753. |   then you can get enough accuracy by precalculate a number of sqr()'s and
  1754. |   sin()'s (and cos()'s ), and store them in an array. Then, instead of
  1755. |   calculating, just jump into the array! This is an old tech I know, but it
  1756. |   worked fine for CBM-64 and Sinclair SPECTRUM and it shouldn't be forgotten
  1757. |   even in these RISCy days right? ;-)
  1758. |   
  1759. |   blsu!
  1760. |   Ola
  1761.  
  1762. Not that I'm an expert, but on PowerPCs, it's actually faster to calculate
  1763. the SQRT than look it up. The mind boggles...
  1764.  
  1765. ---------------------------
  1766.  
  1767. >From telesis@ecf.toronto.edu (Telesis North)
  1768. Subject: What is the Finder trying to tell me?
  1769. Date: Sat, 27 May 1995 23:33:41 GMT
  1770. Organization: noitazinagrO
  1771.  
  1772.  
  1773. Here's an odd one:
  1774.  
  1775. I've got an application that allows the user to drop files onto the
  1776. Finder. When a file is dropped somewhere else on the same volume,
  1777. including the trash, the Finder moves it as expected.
  1778.  
  1779. When the file is dropped onto a different volume, however, Finder 
  1780. sends me the following AppleEvents (class/id):
  1781.  
  1782.    cwin / crea
  1783.    cwin / disp
  1784.    cwin / alrt
  1785.  
  1786. I can hazard a guess at what these might be, but are they actually 
  1787. documented anywhere? I've looked through NIM and all the CD's
  1788. within easy reach, to no avail.
  1789.  
  1790. (System, BTW, is 7.5.1.)
  1791.  
  1792. Thanks,
  1793.  
  1794. --
  1795. Roger Pantos                 Telesis North, Inc.           telesisnorth
  1796. Mac Software Guy             telesis@ecf.toronto.edu       (AppleLink)
  1797. "Baby, I feel fine... I'm pretty sure it's genuine.."  -- Tragically Hip
  1798.  
  1799. +++++++++++++++++++++++++++
  1800.  
  1801. >From greg@math.harvard.edu (Gregory D. Landweber)
  1802. Date: Sun, 28 May 1995 10:47:33 -0400
  1803. Organization: Harvard University
  1804.  
  1805. In article <D99G45.CoG@ecf.toronto.edu>, telesis@ecf.toronto.edu (Telesis
  1806. North) wrote:
  1807.  
  1808. > When the file is dropped onto a different volume, however, Finder 
  1809. > sends me the following AppleEvents (class/id):
  1810. >    cwin / crea
  1811. >    cwin / disp
  1812. >    cwin / alrt
  1813. > I can hazard a guess at what these might be, but are they actually 
  1814. > documented anywhere? I've looked through NIM and all the CD's
  1815. > within easy reach, to no avail.
  1816.  
  1817. As far as I can tell, these are not documented anywhere.  They are internal
  1818. Finder AppleEvents that are used to display a progress box and alerts, and
  1819. I don't think the Finder is supposed to send them to you at all.
  1820.  
  1821. The "cwin/crea" event tells you to create a progress box.  Since you don't
  1822. handle that event, the Finder thinks there is an error, so it immediately
  1823. sends a "cwin/disp" event to dispose of that box.  Then it sends a
  1824. "cwin/alrt" message to display an alert saying that there is an error of
  1825. type 1701 or something of that sort.
  1826.  
  1827. Here are the AppleEvent handlers that I use in Greg's Browser:
  1828.  
  1829. OSErr AEGetParamString ( AppleEvent *theAppleEvent, Str255 theString, long key )
  1830. {
  1831.    DescType typeCode;
  1832.    Size     actualSize;
  1833.    OSErr    theErr;
  1834.    
  1835.    theErr = AEGetParamPtr ( theAppleEvent, key, typeChar, &typeCode,
  1836. theString + 1, 255, &actualSize );
  1837.    theString[0] = actualSize;
  1838.    return theErr;
  1839. }
  1840.  
  1841. // cwin/crea
  1842. pascal OSErr BrowserApp::HandleCreate ( AppleEvent *theAppleEvent,
  1843. AppleEvent *reply,
  1844.                                     BrowserApp *theApp )
  1845. {
  1846.    Progress *theBox = new Progress ( 11237 );
  1847.    
  1848.    Str255      theString;
  1849.    OSErr    theErr;
  1850.    
  1851.    theErr = AEGetParamString ( theAppleEvent, theString, 0x00000005 );
  1852.    theBox->SetString ( 5, theString );
  1853.    
  1854.    theErr = AEGetParamString ( theAppleEvent, theString, 0x00000000 );
  1855.    theBox->SetString ( 0, theString );
  1856.  
  1857.    theErr = AEGetParamString ( theAppleEvent, theString, 0x00000001 );
  1858.    theBox->SetString ( 1, theString );
  1859.  
  1860.    theErr = AEGetParamString ( theAppleEvent, theString, 0x00000002 );
  1861.    theBox->SetString ( 2, theString );
  1862.  
  1863.    return noErr;
  1864. }
  1865.  
  1866. // cwin/cstr
  1867. pascal OSErr BrowserApp::HandleCString ( AppleEvent *theAppleEvent,
  1868. AppleEvent *reply,
  1869.                                     BrowserApp *theApp )
  1870. {
  1871.    Progress *theBox = ( Progress * ) GetWindow ( FrontWindow() );
  1872.    
  1873.    DescType typeCode;
  1874.    Str255      theString;
  1875.    Size     actualSize;
  1876.    OSErr    theErr;
  1877.    long     itemNum;
  1878.    
  1879.    if ( !theBox || !theBox->modal )
  1880.       return noErr;
  1881.       
  1882.    theErr = AEGetParamPtr ( theAppleEvent, keyDirectObject,
  1883. typeLongInteger, &typeCode,
  1884.                       &itemNum, 4, &actualSize );                     
  1885.    theErr = AEGetParamString ( theAppleEvent, theString );
  1886.    theBox->SetString ( itemNum, theString );
  1887.    
  1888.    return noErr;
  1889. }
  1890.  
  1891. // cwin/cbar
  1892. pascal OSErr BrowserApp::HandleCBar ( AppleEvent *theAppleEvent,
  1893. AppleEvent *reply,
  1894.                                   BrowserApp *theApp )
  1895. {
  1896.    Progress *theBox = ( Progress * ) GetWindow ( FrontWindow() );
  1897.    
  1898.    DescType typeCode;
  1899.    Size     actualSize;
  1900.    OSErr    theErr;
  1901.    long     max, val;
  1902.    
  1903.    if ( !theBox || !theBox->modal )
  1904.       return noErr;
  1905.  
  1906.    theErr = AEGetParamPtr ( theAppleEvent, 'maxb', typeLongInteger,
  1907. &typeCode, &max, 4, &actualSize );
  1908.    theErr = AEGetParamPtr ( theAppleEvent, 'valb', typeLongInteger,
  1909. &typeCode, &val, 4, &actualSize );
  1910.    theBox->SetBar ( (short)( max >> 8 ), (short)( val >> 8 ) );
  1911.    
  1912.    return noErr;
  1913. }
  1914.  
  1915. // cwin/disp
  1916. pascal OSErr BrowserApp::HandleDispose ( AppleEvent *theAppleEvent,
  1917. AppleEvent *reply,
  1918.                                     BrowserApp *theApp )
  1919. {
  1920.    Dialog   *d = ( Dialog * ) GetWindow ( FrontWindow() );
  1921.  
  1922.    if ( !d || !d->modal )
  1923.       return noErr;
  1924.  
  1925.    if ( d )
  1926.       delete d;
  1927.    
  1928.    return noErr;
  1929. }
  1930.  
  1931. // cwin/alrt
  1932. pascal OSErr BrowserApp::HandleAlert ( AppleEvent *theAppleEvent,
  1933. AppleEvent *reply,
  1934.                                    BrowserApp *theApp )
  1935. {
  1936.    DescType typeCode;
  1937.    Size     actualSize;
  1938.    OSErr    theErr;
  1939.    Str255      theString;
  1940.    long     alertType;
  1941.    short    dItem;
  1942.    
  1943.    theErr = AEGetParamPtr ( theAppleEvent, keyDirectObject,
  1944. typeLongInteger, &typeCode,
  1945.                       &alertType, 4, &actualSize );
  1946.    theErr = AEGetParamString ( theAppleEvent, theString );
  1947.    
  1948.    ParamText ( theString, nil, nil, nil );
  1949.    
  1950.    switch ( alertType ) {
  1951.       case 0 :
  1952.          dItem = Alert ( 6010, nil );
  1953.          break;
  1954.       case 1 :
  1955.          dItem = Alert ( 6010, nil );
  1956.          break;
  1957.       case 2 :
  1958.          dItem = Alert ( 6012, nil );
  1959.          break;
  1960.    }
  1961.    
  1962.    theErr = AEPutParamPtr ( reply, keyDirectObject, typeShortInteger,
  1963.                       &dItem, sizeof ( dItem ) );
  1964.    return noErr;
  1965. }
  1966.  
  1967. -- Greg Landweber
  1968.    greg@math.harvard.edu
  1969. (author of "Greg's Buttons" and "Greg's Browser")
  1970.  
  1971. +++++++++++++++++++++++++++
  1972.  
  1973. >From bas@luna.nl (Bas A. Schulte)
  1974. Date: Sun, 28 May 1995 17:11:10 +0200
  1975. Organization: Models, Inc.
  1976.  
  1977. In article <D99G45.CoG@ecf.toronto.edu>, telesis@ecf.toronto.edu (Telesis
  1978. North) wrote:
  1979.  
  1980. > When the file is dropped onto a different volume, however, Finder 
  1981. > sends me the following AppleEvents (class/id):
  1982. >    cwin / crea
  1983. >    cwin / disp
  1984. >    cwin / alrt
  1985. > I can hazard a guess at what these might be, but are they actually 
  1986. > documented anywhere?
  1987.  
  1988. I asked about this a while ago too, still don't have an answer. I peeked
  1989. at what the Greg's Browser does when you do this. It seems that when your
  1990. app is in the foreground, the Finder is instructing you to show a progress
  1991. window.
  1992.  
  1993. I still haven't figured out how to do that (don't know which ae's to
  1994. expect), but you could put the Finder in the foreground so it shows it's
  1995. own progress window. Try to drag a file to a different volume, and then
  1996. quickly click in the Desktop to see what I mean.
  1997.  
  1998. Regards,
  1999.  
  2000. Bas A. Schulte
  2001. bas@luna.nl
  2002.  
  2003. +++++++++++++++++++++++++++
  2004.  
  2005. >From telesis@ecf.toronto.edu (Telesis North)
  2006. Date: Sun, 28 May 1995 19:19:40 GMT
  2007. Organization: undecided
  2008.  
  2009. greg@math.harvard.edu (Gregory D. Landweber) wrote:
  2010. >In article <D99G45.CoG@ecf.toronto.edu>, telesis@ecf.toronto.edu (Telesis
  2011. >North) wrote:
  2012. >>    cwin / crea
  2013. >>    cwin / disp
  2014. >>    cwin / alrt
  2015. >> 
  2016. >As far as I can tell, these are not documented anywhere.  They are internal
  2017. >Finder AppleEvents that are used to display a progress box and alerts, and
  2018. >I don't think the Finder is supposed to send them to you at all.
  2019.  
  2020. In article <bas-2805951711100001@07-dynamic-c.rotterdam.luna.net>,
  2021. Bas A. Schulte <bas@luna.nl> wrote:
  2022. >I still haven't figured out how to do that (don't know which ae's to
  2023. >expect), but you could put the Finder in the foreground so it shows it's
  2024. >own progress window. Try to drag a file to a different volume, and then
  2025. >quickly click in the Desktop to see what I mean.
  2026.  
  2027. Thanks for the additional info. What I decided to do was look at the mouse 
  2028. position of the drop (after TrackDrag() returns). If FindWindow() tells me 
  2029. that it ended up somewhere else, I simulate a mouse click to bring that 
  2030. window forward:
  2031.  
  2032. OSErr    SwitchToDest( DragReference dragRef)
  2033. // If the drag ended up in another process, fake some mouse events to 
  2034. // switch  to it.
  2035. {
  2036. Point          pt;
  2037. WindowPtr      whichWin;
  2038. EvQElPtr       pEvQEl;
  2039. OSErr          errCode;
  2040.  
  2041.    if ( noErr == ( errCode = GetDragMouse( dragRef, &pt, NULL)) &&
  2042.         inDesk == FindWindow( pt, &whichWin))
  2043.    {
  2044.       if ( noErr == ( errCode = PPostEvent( mouseDown, 0L, &pEvQEl))) {
  2045.          pEvQEl->evtQWhere = pt;
  2046.          pEvQEl->evtQModifiers = 0;
  2047.          if ( noErr == ( errCode = PPostEvent( mouseUp, 0L, &pEvQEl))) {
  2048.             pEvQEl->evtQWhere = pt;
  2049.             pEvQEl->evtQModifiers = 0;
  2050.          }
  2051.       }
  2052.    }
  2053.    return errCode;
  2054. }
  2055.  
  2056. I realize that the mouse thing is a painful kludge; I'd rather use 
  2057. SetFrontProcess(). Unfortunately, I can't find a way to translate that mouse 
  2058. position (or the DropLocation) into a PSN. Ho, well.
  2059.  
  2060. I'm also somewhat annoyed that the Drag manager provides explicit support for 
  2061. dragging files around, and even mentions that the Finder will move them - but 
  2062. stops just short of documenting it completely. Perhaps this is a candidate 
  2063. for DTS to answer in the Finder Q&A technote.
  2064.  
  2065. cheers,
  2066.  
  2067. --
  2068. Roger Pantos                 Telesis North, Inc.           telesisnorth
  2069. Mac Software Guy             telesis@ecf.toronto.edu       (AppleLink)
  2070. "Mmmm... Soylent Green" -- Homer Simpson.
  2071.  
  2072. +++++++++++++++++++++++++++
  2073.  
  2074. >From bas@luna.nl (Bas A. Schulte)
  2075. Date: Thu, 01 Jun 1995 10:32:55 +0200
  2076. Organization: Models, Inc.
  2077.  
  2078. In article <D9Az0s.qn@ecf.toronto.edu>, telesis@ecf.toronto.edu (Telesis
  2079. North) wrote:
  2080.  
  2081. > Thanks for the additional info. What I decided to do was look at the mouse 
  2082. > position of the drop (after TrackDrag() returns). If FindWindow() tells me 
  2083. > that it ended up somewhere else, I simulate a mouse click to bring that 
  2084. > window forward:
  2085. [...]
  2086. > I realize that the mouse thing is a painful kludge; I'd rather use 
  2087. > SetFrontProcess(). Unfortunately, I can't find a way to translate that mouse 
  2088. > position (or the DropLocation) into a PSN. Ho, well.
  2089. > I'm also somewhat annoyed that the Drag manager provides explicit support for 
  2090. > dragging files around, and even mentions that the Finder will move them - but 
  2091. > stops just short of documenting it completely. Perhaps this is a candidate 
  2092. > for DTS to answer in the Finder Q&A technote.
  2093.  
  2094. Concluding the issue I'd say drag&drop with the HFSFlavor is quite
  2095. useless! Finder is only of the app's around, using inconsistent behaviour.
  2096. Do I have to special-case for each receiving app? MS Word probably handles
  2097. a drop quite differently, sending me yet other appleevents to show my
  2098. progress window (or would I need to become an OLE 2 server?).
  2099.  
  2100. Maybe I'll use the same method (posting a mousedown event to the receiving
  2101. app), what's a software company got to do?
  2102.  
  2103. One more for Greg: does the progress window you create after a cwin/crea
  2104. event have a 'cancel' button and if so, how do you handle that?
  2105.  
  2106. Regards, Bas.
  2107.  
  2108. +++++++++++++++++++++++++++
  2109.  
  2110. >From pottier@chaland.ens.fr (Francois Pottier)
  2111. Date: 2 Jun 1995 11:49:20 GMT
  2112. Organization: Ecole Normale Superieure, Paris
  2113.  
  2114. In article <bas-0106951032550001@01-dynamic-c.rotterdam.luna.net>,
  2115. Bas A. Schulte <bas@luna.nl> wrote:
  2116.  
  2117. >Concluding the issue I'd say drag&drop with the HFSFlavor is quite
  2118. >useless!
  2119.  
  2120. I wonder why everybody lets the Finder do the copy? I use GetDropLocation
  2121. to determine where the file should be put and I write it there directly
  2122. myself. I can display my own progress dialog if I wish to, and I can copy
  2123. a file much faster than the brain-dead Finder.
  2124.  
  2125. Anything I'm missing?
  2126.  
  2127.  
  2128.  
  2129.  
  2130. -- 
  2131. Francois Pottier                                            pottier@dmi.ens.fr
  2132. - ----------------------------------------------------------------------------
  2133. Check my WWW page at http://acacia.ens.fr:8080/home/pottier/ ...
  2134.  
  2135. +++++++++++++++++++++++++++
  2136.  
  2137. >From telesis@ecf.toronto.edu (Telesis North)
  2138. Date: Sat, 3 Jun 1995 17:22:35 GMT
  2139. Organization: University of Toronto, Engineering Computing Facility
  2140.  
  2141. In article <3qmts0$2f4@nef.ens.fr>,
  2142. Francois Pottier <pottier@chaland.ens.fr> wrote:
  2143. >I wonder why everybody lets the Finder do the copy? I use GetDropLocation
  2144. >to determine where the file should be put and I write it there directly
  2145.  
  2146. This is an approach I hadn't considered. If you do the copy yourself, does
  2147. the Finder clue into this and refrain from doing it as well? (And
  2148. presumably sending you weird AppleEvents, etc.)
  2149.  
  2150. As an aside, how do you tell it's the Finder you're dropping it on? (And
  2151. isn't having the source effectively accept the drop on behalf of the
  2152. destination a bit of an unconventional use of the model?)
  2153.  
  2154.  
  2155. --
  2156. Roger Pantos                 Telesis North, Inc.           telesisnorth
  2157. Mac Software Guy             telesis@ecf.toronto.edu       (AppleLink)
  2158. CodeWarrior: because life is too short for MPW.
  2159.  
  2160. +++++++++++++++++++++++++++
  2161.  
  2162. >From telesis@ecf.toronto.edu (Telesis North)
  2163. Date: Tue, 6 Jun 1995 17:33:54 GMT
  2164. Organization: undecided
  2165.  
  2166.  
  2167. For any out there who are still interested, I came across this today in
  2168. the latest Drag & Drop release notes on CW6:
  2169.  
  2170. "If you drag a file to Finder version 7.1.3 using a flavorTypeHFS or 
  2171. flavorTypePromiseHFS flavor, and that file is currently displayed in a 
  2172. Finder window then that window will not be updated correctly.  Also if that 
  2173. file is dragged to a different volume than the drop location than the 
  2174. Finder will produce an error and the drag will usually fail.  These 
  2175. problems also occur with System Software version 7.5.  These problems will 
  2176. be fixed in a later version of system software."
  2177.  
  2178. I have no idea what "drag to a different volume than the drop (sic)
  2179. location" means, but this sounds suspiciously like an acknowledgement
  2180. of the weird-o AppleEvent problem.
  2181.  
  2182. - -
  2183. Roger Pantos                 Telesis North, Inc.           telesisnorth
  2184. Mac Software Guy             telesis@ecf.toronto.edu       (AppleLink)
  2185. CodeWarrior: because life is too short for MPW.
  2186.  
  2187. ---------------------------
  2188.  
  2189. >From junkster@coho.halcyon.com (James Hague)
  2190. Subject: Why is the Prefererred Executable Format a big secret?
  2191. Date: 21 May 1995 21:02:47 GMT
  2192. Organization: Northwest Nexus, Inc. - Professional Internet Services
  2193.  
  2194. In IM: PowerPC System software, it is stated that there are two types of 
  2195. "containers" used for disk-based applications:  XCOFF and PEF.  IM goes 
  2196. on to state that XCOFF is just a carry-over from Unix-based development 
  2197. and that PEF is the format to use.  Furthermore, PEF is supposed to 
  2198. result in much smaller files.
  2199.  
  2200. So where the heck is PEF documented?  Not in IM.  Do the MW compilers use 
  2201. it?  I have done some digging and not been able to come up with anything.
  2202.  
  2203. (Note:  This is mostly for my own exploration, though I know other people 
  2204. are looking for this information as well.  I was mostly planning on 
  2205. picking apart a PPC application, just to see what information is in there 
  2206. and how it is stored.  It bugs me that PEF is a big mystery even though 
  2207. it is talked about in IM.)
  2208.  
  2209. James Hague
  2210. junkster@halcyon.com
  2211.  
  2212. +++++++++++++++++++++++++++
  2213.  
  2214. >From Michael Werts <werts@heart.engr.csulb.edu>
  2215. Date: Sun, 21 May 1995 20:00:59 -0700
  2216. Organization: Cal State Long Beach
  2217.  
  2218. On 21 May 1995, James Hague wrote:
  2219.  
  2220. > So where the heck is PEF documented?  Not in IM.  Do the MW compilers use 
  2221. > it?  I have done some digging and not been able to come up with anything.
  2222. > (Note:  This is mostly for my own exploration, though I know other people 
  2223. > are looking for this information as well.  I was mostly planning on 
  2224. > picking apart a PPC application, just to see what information is in there 
  2225. > and how it is stored.  It bugs me that PEF is a big mystery even though 
  2226. > it is talked about in IM.)
  2227. > James Hague
  2228. > junkster@halcyon.com
  2229.  
  2230. I agree absolutely.  Eight months ago I also poked around for this info.
  2231. I could not find it and the result was I switched my project to NT because
  2232. detailed information was available on the Portable Executable Format for
  2233. Win32.  
  2234.  
  2235. I have the impression that Apple likes to force developer's to come to them
  2236. for information; at the same time I was looking for info on ASLM and had to
  2237. approach an Apple manager by email.
  2238.  
  2239. I do not like having to beg for information (of course, I am still lurking
  2240. around this group which shoulld give you an idea of how happy I am with NT).
  2241.  
  2242. MICHAEL WERTS -- werts@csulb.edu
  2243. Computer Engineering Computer Science
  2244. California State University Long Beach
  2245.  
  2246.  
  2247. +++++++++++++++++++++++++++
  2248.  
  2249. >From jens_alfke@powertalk.apple.com (Jens Alfke)
  2250. Date: Fri, 26 May 1995 15:46:58 GMT
  2251. Organization: Apple Computer, Inc.
  2252.  
  2253. In article
  2254. <Pine.SGI.3.91.950521195322.11580A-100000@heart.engr.csulb.edu>, Michael
  2255. Werts <werts@heart.engr.csulb.edu> wrote:
  2256.  
  2257. > > So where the heck is PEF documented?  Not in IM.  Do the MW compilers use 
  2258. > > it?  I have done some digging and not been able to come up with anything.
  2259.  
  2260. Any PowerPC compiler has to generate PEF code, since that's the single
  2261. format for applications and libraries on PowerPC.
  2262.  
  2263. > I agree absolutely.  Eight months ago I also poked around for this info.
  2264. > I could not find it and the result was I switched my project to NT because
  2265. > detailed information was available on the Portable Executable Format for
  2266. > Win32.  
  2267. > I have the impression that Apple likes to force developer's to come to them
  2268. > for information; at the same time I was looking for info on ASLM and had to
  2269. > approach an Apple manager by email.
  2270.  
  2271. Not really. It's just that it takes a long time to write decent
  2272. documentation, so not everything gets documented at the same rate. Things
  2273. like Mixed Mode and CFM are much more important for developers to know
  2274. about, so they get documented more quickly and in easily-available books.
  2275. PEF, on the other hand, is a format that really only needs to be exposed
  2276. to people building compilers/linkers or similar programming tools; not a
  2277. very large audience.
  2278. The question is what channel to go through to get whatever sketchy
  2279. documentation exists. Have you tried writing to
  2280. DEVSUPPORT@applelink.apple.com? I've sent out some e-mail around here and
  2281. I'll post the answer if I get one.
  2282.  
  2283.  
  2284. Jens Alfke_________OpenDoc Geometer_________jens_alfke@powertalk.apple.com
  2285.                                            OpenDoc info: FTP to CILabs.org
  2286.  
  2287.                 LLAMA: NO FEAR OF SPIKES
  2288.  
  2289. +++++++++++++++++++++++++++
  2290.  
  2291. >From Alan Harper <aharper@dnai.com>
  2292. Date: 28 May 1995 10:09:47 GMT
  2293. Organization: Eclectus
  2294.  
  2295. In article <jens_alfke-2605951646580001@jensothermac.apple.com> 
  2296. Jens Alfke, jens_alfke@powertalk.apple.com writes:
  2297. >PEF, on the other hand, is a format that really only needs to be exposed
  2298. >to people building compilers/linkers or similar programming tools; not a
  2299. >very large audience.
  2300. >
  2301.  
  2302. For what it's worth, I am just working on an app, but I needed to
  2303. generate an xcoff segment which I use as a data store and a jump
  2304. table. Finding out the xcoff file format wasn't easy since Apple
  2305. supplies no documentation (and figuring out which relocations
  2306. Apple & MW supported was pure experimentation). I've seen about
  2307. 5 other posts on c.s.m.p.etc asking for xcoff documentation, so
  2308. I do think that library/executable file formats are things many
  2309. programmers need to know about.
  2310.  
  2311. So, please post info if you find any documentation on PEF.
  2312.  
  2313. - -------------------------------------------------
  2314. Alan Harper                77 Jack London Sq, Ste H
  2315. aharper@dnai.com           Oakland, CA 94607
  2316.                            510/444-6605
  2317.  
  2318. +++++++++++++++++++++++++++
  2319.  
  2320. >From Mark.R.Valence@dartmouth.edu (kurash@dartmouth.edu)
  2321. Date: 28 May 1995 23:09:49 GMT
  2322. Organization: Dartmouth College, Hanover, NH
  2323.  
  2324. In article <3q9i5b$d7n@hilbert.dnai.com>
  2325. Alan Harper <aharper@dnai.com> writes:
  2326. > In article <jens_alfke-2605951646580001@jensothermac.apple.com> 
  2327. > Jens Alfke, jens_alfke@powertalk.apple.com writes:
  2328. > >PEF, on the other hand, is a format that really only needs to be exposed
  2329. > >to people building compilers/linkers or similar programming tools; not a
  2330. > >very large audience.
  2331. > >
  2332. > For what it's worth, I am just working on an app, but I needed to
  2333. > generate an xcoff segment which I use as a data store and a jump
  2334. > table. Finding out the xcoff file format wasn't easy since Apple
  2335. > supplies no documentation (and figuring out which relocations
  2336. > Apple & MW supported was pure experimentation). I've seen about
  2337. > 5 other posts on c.s.m.p.etc asking for xcoff documentation, so
  2338. > I do think that library/executable file formats are things many
  2339. > programmers need to know about.
  2340. > So, please post info if you find any documentation on PEF.
  2341. > ---------------------------------------------------
  2342. > Alan Harper                77 Jack London Sq, Ste H
  2343. > aharper@dnai.com           Oakland, CA 94607
  2344. >                            510/444-6605
  2345.  
  2346. The xcoff format is merely a temporary format used by PPCC and some
  2347. other compilers, and is read by older versions of the two-mac debugger.
  2348.  I think that more recent compilers can link directly to PEF, and the
  2349. two-mac debugger doesn't need the xcoff file any more, either.  PEF is
  2350. very similar to xcoff, but I can see why it might be difficult to get
  2351. xcoff docs since it isn'tthe interesting format.
  2352.  
  2353. PEF isn't that difficult to figure out, either.  Grab your copy of the
  2354. dumppef MPW tool and a bunch of PEF apps, then compare and contrast
  2355. dumppef's output on these files.  The labels that dumppef uses are very
  2356. informative (especially in the latest version of dumppef).
  2357.  
  2358. Did you ever hack games file when you were a kid?  ;-)  That's the mind
  2359. set you need.
  2360.  
  2361. Mark.
  2362.  
  2363. +++++++++++++++++++++++++++
  2364.  
  2365. >From junkster@coho.halcyon.com (James Hague)
  2366. Date: 29 May 1995 16:54:14 GMT
  2367. Organization: Northwest Nexus, Inc. - Professional Internet Services
  2368.  
  2369. kurash@dartmouth.edu <Mark.R.Valence@dartmouth.edu> wrote:
  2370. >
  2371. >PEF isn't that difficult to figure out, either.  Grab your copy of the
  2372. >dumppef MPW tool and a bunch of PEF apps, then compare and contrast
  2373. >dumppef's output on these files.  The labels that dumppef uses are very
  2374. >informative (especially in the latest version of dumppef).
  2375. >
  2376. >Did you ever hack games file when you were a kid?  ;-)  That's the mind
  2377. >set you need.
  2378.  
  2379. It's appalling that Apple forces people to take this route, though.
  2380.  
  2381. Near as I can figure, from email I have received, Apple is forcing 
  2382. developers to pay some ridiculous amount to get information on the inner 
  2383. workings of PowerPC system software.  What's presented in the IM volume 
  2384. of the same name is vague, misleading, and full of holes.
  2385.  
  2386. James Hague
  2387. junkster@halcyon.com
  2388.  
  2389. +++++++++++++++++++++++++++
  2390.  
  2391. >From pchang@Xenon.Stanford.EDU (The Weasel)
  2392. Date: 31 May 1995 00:22:15 GMT
  2393. Organization: Computer Science Department, Stanford University.
  2394.  
  2395. >>PEF isn't that difficult to figure out, either.  Grab your copy of the
  2396. >>dumppef MPW tool and a bunch of PEF apps, then compare and contrast
  2397. >>dumppef's output on these files.  The labels that dumppef uses are very
  2398. >>informative (especially in the latest version of dumppef).
  2399.  
  2400. While I have not seen the very latest version of dumppef, you might want
  2401. to try yadp from jasik instead. I think that the format that it
  2402. dumps things is a bit nicer than dump pef. 
  2403.  
  2404. On figuring it all out by yourself, some parts of the PEF format
  2405. are sort of weird even with the docs supplied by Apple. At least
  2406. I thought so :-).
  2407.  
  2408. Peter
  2409. -- 
  2410. ObURL:       <a href="http://xenon.stanford.edu/~pchang/bhh.html">
  2411. ObQuote:     Do not do unto others as you would they should do unto you.  
  2412.              Their tastes may not be the same. -- GBS
  2413.  
  2414. +++++++++++++++++++++++++++
  2415.  
  2416. >From Mark.R.Valence@dartmouth.edu (kurash@dartmouth.edu)
  2417. Date: 31 May 1995 13:33:53 GMT
  2418. Organization: Dartmouth College, Hanover, NH
  2419.  
  2420. In article <3qgcrn$per@Radon.Stanford.EDU>
  2421. pchang@Xenon.Stanford.EDU (The Weasel) writes:
  2422. > >>PEF isn't that difficult to figure out, either.  Grab your copy of the
  2423. > >>dumppef MPW tool and a bunch of PEF apps, then compare and contrast
  2424. > >>dumppef's output on these files.  The labels that dumppef uses are very
  2425. > >>informative (especially in the latest version of dumppef).
  2426. > While I have not seen the very latest version of dumppef, you might want
  2427. > to try yadp from jasik instead. I think that the format that it
  2428. > dumps things is a bit nicer than dump pef. 
  2429. > On figuring it all out by yourself, some parts of the PEF format
  2430. > are sort of weird even with the docs supplied by Apple. At least
  2431. > I thought so :-).
  2432.  
  2433. The latest version is much better than previous version, although I
  2434. have not seen yadp to compare.  One nice thing the new version will do
  2435. is dump an entire PIData section annotated with the packing
  2436. instructions.  Oh, how I wish I had this when I was trying to figure
  2437. out the packing stuff!
  2438.  
  2439. I thought PEF was pretty straightforward, after I knew what everything
  2440. was for, of course.  Maybe not having the Apple docs was a good thing
  2441. ;-)
  2442.  
  2443. Mark.
  2444.  
  2445. +++++++++++++++++++++++++++
  2446.  
  2447. >From Manuel Veloso <veloso@RT66.com>
  2448. Date: 31 May 1995 16:15:44 GMT
  2449. Organization: Ibex Productions
  2450.  
  2451. In article
  2452. <Pine.SGI.3.91.950521195322.11580A-100000@heart.engr.csulb.edu> Michael
  2453. Werts, werts@heart.engr.csulb.edu writes:
  2454. >I have the impression that Apple likes to force developer's to come to them
  2455. >for information; at the same time I was looking for info on ASLM and had to
  2456. >approach an Apple manager by email.
  2457. >
  2458.  
  2459. Why not just check on the normal ftp sites or on the developer disc for
  2460. the ASLM info?
  2461.  
  2462. Also, there's some kind of hacked PEF format description floating
  2463. around. I know it's up on Compuserve; it might be on info-mac by
  2464. now.
  2465.  
  2466. +++++++++++++++++++++++++++
  2467.  
  2468. >From jens_alfke@powertalk.apple.com (Jens Alfke)
  2469. Date: Tue, 6 Jun 1995 22:58:08 GMT
  2470. Organization: Apple Computer, Inc.
  2471.  
  2472. In article <3q9i5b$d7n@hilbert.dnai.com>, Alan Harper <aharper@dnai.com> wrote:
  2473.  
  2474. > For what it's worth, I am just working on an app, but I needed to
  2475. > generate an xcoff segment which I use as a data store and a jump
  2476. > table. Finding out the xcoff file format wasn't easy since Apple
  2477. > supplies no documentation (and figuring out which relocations
  2478. > Apple & MW supported was pure experimentation). I've seen about
  2479. > 5 other posts on c.s.m.p.etc asking for xcoff documentation
  2480.  
  2481. XCOFF comes, I believe, from the Unix world. It's not an Apple-invented
  2482. format. The main reason it's used on the Mac at all is that it's the
  2483. object code format that the RS/6000 compilers generate, and all the
  2484. original PPC code was cross-compiled on those systems, before the days of
  2485. PPCC and CodeWarrior.
  2486. Unix is generally pretty self-documenting, so there should be XCOFF docs
  2487. available online on various Unix systems... log into an RS/6000 sometime
  2488. and try "man xcoff".
  2489.  
  2490.  
  2491. Jens Alfke_________OpenDoc Geometer_________jens_alfke@powertalk.apple.com
  2492.                                            OpenDoc info: FTP to CILabs.org
  2493.  
  2494.                 LLAMA: NO FEAR OF SPIKES
  2495.  
  2496. +++++++++++++++++++++++++++
  2497.  
  2498. >From mattm@apple.com (Matthew Melmon)
  2499. Date: Tue, 6 Jun 1995 23:29:57 GMT
  2500. Organization: Apple Computer, Inc.
  2501.  
  2502. In article <jens_alfke-0606951558080001@jensothermac.apple.com>,
  2503. jens_alfke@powertalk.apple.com (Jens Alfke) wrote:
  2504.  
  2505. > In article <3q9i5b$d7n@hilbert.dnai.com>, Alan Harper <aharper@dnai.com>
  2506. wrote:
  2507. > > For what it's worth, I am just working on an app, but I needed to
  2508. > > generate an xcoff segment which I use as a data store and a jump
  2509. > > table. Finding out the xcoff file format wasn't easy since Apple
  2510. > > supplies no documentation (and figuring out which relocations
  2511. > > Apple & MW supported was pure experimentation). I've seen about
  2512. > > 5 other posts on c.s.m.p.etc asking for xcoff documentation
  2513. > XCOFF comes, I believe, from the Unix world. It's not an Apple-invented
  2514. > format. The main reason it's used on the Mac at all is that it's the
  2515. > object code format that the RS/6000 compilers generate, and all the
  2516. > original PPC code was cross-compiled on those systems, before the days of
  2517. > PPCC and CodeWarrior.
  2518. > Unix is generally pretty self-documenting, so there should be XCOFF docs
  2519. > available online on various Unix systems... log into an RS/6000 sometime
  2520. > and try "man xcoff".
  2521.  
  2522. XCOFF (Extended Common Object File Format - or something) is an
  2523. extension (go figure) to the Common Object File Format of Unix
  2524. geekdom.  Relevent for the reasons Jens states:  that's what xlc
  2525. spit out (or what xlc and ld spit out).  PPCLink used to spit
  2526. out XCOFF, subsequently converted to PEF (Power Executable Format,
  2527. not Preferred) by MakePEF.  The MakePEF step has been eliminated
  2528. in the most recent version of PPCLink (shipping on ETO 17).  PPCLink
  2529. generates PEF directly.
  2530.  
  2531. As for the documentation of PEF, the Dude to Contact is probably
  2532. Jordan Mattson at MATTSON1 (AppleLink).  For XCOFF documentation,
  2533. man xcoff won't cut it.  The format is documented in IBM's 
  2534. "AIX Files Reference."  The manual number I have is GC23-2200-03.
  2535. That's for AIX 3.2, they're now on 4.x I believe.  Those with
  2536. RS/6000's can check on Info Explorer, in the Files book.
  2537.  
  2538. -- 
  2539. *X*
  2540. Splatasha, Queen of the Damned (Vanishing Sig)
  2541.  
  2542. ---------------------------
  2543.  
  2544. End of C.S.M.P. Digest
  2545. **********************
  2546.